Problem bei der Aufrundung

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

  • Problem bei der Aufrundung

    Hi Leute,

    ich habe ein komisches Problem und zwar bei folgendem Script kommt be der Aufrundung eine andere Wert als erwartet.
    Ich kann nicht nachvollziehen, warum.
    PHP-Code:
    $qmBestellt=8,64// qm    mit anderen Werten geht das
    $PlatteWidth=600;       // mm
    $PlatteHeight=600;   // mm
    $qmProPlatte=($PlatteWidth/1000)*($PlatteHeight/1000); //qm pro Platte
    $plattenMenge=$qmBestellt/$qmProPlatte;  // Grobe Anzahl der Platten
    $plattenMengeAuf=ceil($plattenMenge);    // Anzahl der Platten aufrunden
    $mengeneu=round($plattenMengeAuf*$qmProPlatte,2); // Tatsächliche   Menge berechnen
        // Ergebniss ausgeben
    echo $qmProPlatte."<br>";
    echo 
    "<b>$plattenMenge</b><br>";     // !!! da wird 24 ausgegeben
    echo "<b>$plattenMengeAuf</b><br>";    // !!! nach der Aufrundung 25
    $test=24;
    echo 
    ceil($test)."<br>";    // Test
    echo $mengeneu."<br>"
    Wo liegt das Problem?

    Grüße

  • #2
    Re: Problem bei der Aufrundung

    Original geschrieben von yesrus
    Wo liegt das Problem ?
    Ich schätze mal da:
    Original geschrieben von yesrus
    PHP-Code:
    $qmBestellt=8,64// qm    mit anderen Werten geht das 
    guck dir die Zeile nochmal genau an!
    hopka.net!

    Kommentar


    • #3
      So komisch ist das Problem nun auch wieder nicht.

      Erstmal soll es in der ersten Zeile bestimmt
      PHP-Code:
      $qmBestellt=8.64
      heißen.

      Aber das ist nicht das eigentliche Problem. Das Problem ist, daß die hier durchgeführten Berechnungen ausserhalb der Anzeigenpräzesion von PHP liegen. Als Ergebnis für $plattenMenge erhält man nach Division für die Berechnung der Plattenanzahl in etwa:
      24.00000000000000355271367880050092935562

      Die Aufrundung, die ceil durchführt, ist also mit dem Ergebnis 25 durchaus korrekt.

      Um die Genauigkeit der Fliesskommazahlen-Anzeige zu erhöhen kannst Du zu Beginn Deines Skripts den Befehl

      PHP-Code:
      ini_set('precision'40); 
      verwenden. Damit dürfte die Vorgehensweise von PHP dann klarer werden.
      Happiness is an empty error log

      Kommentar


      • #4
        Danke dir Cymon. Supper!

        Das Problem hat sich damit erlöst.

        Ich habe mit Funktion
        PHP-Code:
        round($plattenMenge,4
        alle weitere ..00355271... ausgeschloßen.


        Grüße

        Kommentar

        Lädt...
        X