Ankündigung

Einklappen
Keine Ankündigung bisher.

floor - ein rätsel?

Einklappen

Neue Werbung 2019

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

  • floor - ein rätsel?

    Hi allezusammen,

    kurz und knapp, bisher dachte ich immer floor() rundet ab sofern es was zu runden gibt.

    floor(116) = 116 (gibt ja nix zu runden)
    floor(100*1.16) sollte normalerweise auch 116 ergeben oder nicht?

    Aber in dem Fall kürz er mir das Ergebnis von 100*1.16 (was ja 116 ist) auf 115.

    Also irgendwie hab ich da was nicht mitbekommen

    Wie kann man nun Ganzzahlig teilen ohne das "glatte" Ergebnisse noch um eins abgerundet werden??

  • #2
    versuchs mal mal mit bcdiv($a, $b);

    /edit: ich spekuliere mal:
    die lösung des rätsels liegt vielleicht darin, dass bei php floatwerte intern als z.b. 115.999999... vorliegen, floor macht dann wohl nichts anderes als die stellen vor dem komma abzuschneiden und auszugeben (bzw. wenn negativ noch -1 zu rechnen) dementsprechend würde auch floor(-(100*1.16))*(-1); funktionieren (wieso nicht auch mal umständlich?)

    Kommentar


    • #3
      Sorry, aber da brauche ich noch mehr Infos

      Was ist mit $a und $b?
      Wenn ich bcdiv(rechnung); schreibe kommt ne fehlermeldung
      Unter PHP-Faq ist kein Eintrag zu bcdiv zu finden.

      Kurz:

      PHP-Code:
      <?php
      echo floor(100*1.16); // liefert 115 zurück (wie muss ich bcdiv anwenden damit 116 kommt?
      ?>

      Kommentar


      • #4
        das war eher die antwort auf die frage wie man ganzzahlig teilen kann dann wäre das wie floor($a/$b);
        http://de.php.net/bcdiv

        wie gesagt, sonst machs eben mit dem trick:
        PHP-Code:
        <?php
        -floor(-(100*1.16));
        ?>

        Kommentar


        • #5
          PHP-Code:
          <?php

          // eine Krücke: Umwandlung in eine Zeichenkette, so dass interne Ungenauigkeiten wegfallen
          echo floor((string)(100*1.16));
          echo 
          ' | ';
          // bcmul liefert auch eine Zeichenkette
          echo floor(bcmul(100,1.16));
          ?>

          Kommentar


          • #6
            Also wenn es wiedermal um Preisangaben geht, wäre floor() wohl fehl am Platz, oder ?

            Kommentar


            • #7
              Jo danke ... Wiedermal ins Schwarze getroffen

              Kommentar


              • #8
                Benutze lieber sprintf() oder number_format(), aber niemals bei Preisgaben mit floor(), ceil() oder sonstwas runden.

                Hatten wir alles schon hier

                Kommentar


                • #9
                  Jo also es ging um Preise (MwSt)

                  Eine Frage noch:

                  Wenn ich nun den Preis 1,80EUR habe, das macht mit MwSt 2,088 (also 2,09EUR).

                  bcmul($Preis,1.16,2); rundet mir das ganze jedoch auf 2,08 EUR ab. Gibt es da noch ne Lösung?

                  Kommentar


                  • #10
                    wäre das nicht was für number_format() wie von CIX88 vorgeschlagen?

                    Kommentar


                    • #11
                      Was ist eigentlich 1.16 ? Deine MwSt ?

                      Kommentar


                      • #12
                        Ok, geht... Thx @CIX88 und karl-150 und Bruchpilot

                        Kommentar


                        • #13
                          Jup is MwSt,

                          warum gibts ne extra PHP-Funktion um die MwSt zu berechnen?

                          Kommentar


                          • #14
                            Zum nachvollziehen noch zum Schluss:

                            PHP-Code:
                            <?php
                            error_reporting
                            (E_ALL);

                            echo 
                            sprintf("%.2lf"1.8 1.16 );
                            echo 
                            '
                            '
                            ;
                            echo 
                            number_format(1.8 1.162',''.');

                            ?>
                            EDIT:

                            Jo, warum gibts ne extra PHP-Funktion um die MwSt zu berechnen?
                            Nö, Frage war nur so am Rande.

                            Kommentar


                            • #15
                              Jo, thx auf dafür!!

                              Kommentar

                              Lädt...
                              X