Währungen mit Platzhalter runden

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    Zitat von mermshaus Beitrag anzeigen
    Integer-Division bedeutet: Wenn zwei Integer durcheinander geteilt werden und das Ergebnis keinen Integer ergibt, dann wird der Rest verworfen, sodass es wieder einen Integer ergibt.

    10 / 5 → 2 (Rest 0) → 2
    14 / 5 → 2 (Rest 4) → 2

    Das gibt es aber in PHP nicht. PHP liefert in dem Fall eine Fließkommazahl (14 / 5 → 2.8).
    Mit ein bisschen Herumtrickserei funktioniert das auch in PHP. Seit PHP 5.6 kann man GMP-Zahlen auch mit mathematischen Operatoren verknüpfen:

    PHP-Code:
    $num gmp_init(14);
    $result $a 5;
    var_dump((int) $result); // int(10)
    var_dump((double) $result); // float(10) 
    Mit GMP könnte man prinzipiell auch Währungs-Werte berechnen. Da aber die PHP-Erweiterung nur die Ganzzahl-Funktionen der LibGMP anzapft, muss man sich dabei auf die kleinste darstellbare Währungseinheit beschränken und Ein- und Ausgaben entsprechend umrechnen (oder umformatieren).
    Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

    Kommentar


    • #17
      Mehr random Operator-Overloading, das nur auf C-Ebene definierbar ist, hat PHP natürlich gerade noch gefehlt.

      Na ja, solange die Extension nicht…

      Code:
      $ php -m | grep gmp
      $
      …mitinstalliert wird, lohnt es sich leider allgemein eh nicht wirklich, sich damit zu befassen.

      Kommentar


      • #18
        PHP-Code:
        function int_div($dividend$divisor) {
            return (
        $dividend $dividend $divisor) / $divisor;
        }

        var_dump(int_div(105)); // int(2) 
        var_dump(int_div(145)); // int(2) 

        Kommentar


        • #19
          Oder auch einfach (int)($a/$b), aber mit einer Funktion wäre es im Zweifel wohl semantisch eindeutiger.

          Kommentar


          • #20
            Ist
            PHP-Code:
            gmp_div(145); 
            zu kompliziert?

            Mehr random Operator-Overloading, das nur auf C-Ebene definierbar ist, hat PHP natürlich gerade noch gefehlt.
            Ich habe nicht geschrieben, dass es mir gefällt, nur auf das Vorhandensein dieses Features hingewiesen.

            solange die Extension nicht (...) mitinstalliert wird (...)
            Bei den Standard-(Windows)-Binaries von php.net ist sie dabei.
            Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

            Kommentar


            • #21
              Bei meinem Ubuntu 14.04 hier leider nicht. Ist natürlich trivial, die zu installieren, falls man Rechte dazu hat.

              Ich finde es schwierig, die Frage zu beantworten, welche PHP-Extensions man sicher nutzen kann, weil sie quasi überall installiert sind.

              Dass sich solche Probleme nicht stellen, wenn das Zielsystem bekannt oder administrierbar ist, ist klar.

              Ein phpversions.info für Extensions würde mich mal sehr interessieren. Bzw. einfach Zahlen dazu.
              Zuletzt geändert von mermshaus; 18.10.2015, 11:43.

              Kommentar


              • #22
                PHP 7 hat übrigens intdiv().

                Kommentar


                • #23
                  Bei meinem Ubuntu 14.04 hier leider nicht. Ist natürlich trivial, die zu installieren, falls man Rechte dazu hat.

                  Ich finde es schwierig, die Frage zu beantworten, welche PHP-Extensions man sicher nutzen kann, weil sie quasi überall installiert sind.
                  Laut PHP: Membership - Manual gehört GMP zu den "bundled Extensions" (aber mit Abhängigkeit von externen Libraries -- BCMath kommt da ohne aus).

                  Zitat von h3ll Beitrag anzeigen
                  PHP 7 hat übrigens intdiv().
                  Der Fortschritt ist nicht aufzuhalten!
                  Divmod() bekommen wir dann sicher in PHP 9.
                  In PHP 11 liefert es dann sogar zwei Rückgabewerte statt eines numerisch indizierten Arrays.
                  Und in PHP 13 gibts schließlich eine Modulo-Funktion, die mathematisch korrekt rechnet.
                  Zuletzt geändert von fireweasel; 18.10.2015, 23:05. Grund: Versionsnummer-Zählung +=2 (typischer für PHP als +=1)
                  Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                  Kommentar


                  • #24
                    Laut PHP: Membership - Manual gehört GMP zu den "bundled Extensions" (aber mit Abhängigkeit von externen Libraries -- BCMath kommt da ohne aus).
                    Ich habe mittlerweile zwei Hosting-Anbieter gefunden, die gmp offenbar nicht haben (Strato und hostgator). Es ist leider extrem schmerzhaft, überhaupt Modul-Auflistungen zu finden. Mit so Details halten sich viele Anbieter nicht auf.

                    Das betrifft natürlich zahlreiche Module/Extensions und ist ärgerlich, weil man dadurch etliche eigentlich verfügbare Features nicht nutzen kann (gutes Beispiel ist sicher das intl-Zeug), wenn man Software/Libraries schreiben möchte, die möglichst überall laufen.

                    Ich habe wegen so was schon öfter bestimmte Features/Funktionsaufrufe aus Code rausgenommen.

                    Kommentar

                    Lädt...
                    X