Ankündigung

Einklappen
Keine Ankündigung bisher.

Vermutlich Rundungsfehler

Einklappen

Neue Werbung 2019

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

  • Vermutlich Rundungsfehler

    Ich baue gerade einen kleinen Shop und möchte im letzten Stop alle Positionen aufsummieren lassen:

    PHP-Code:
    <?php
    $ges_value 
    $prod1_value $prod2_value $prod3_value 6.90;
    $ges_value round($ges_value2);
    $ges_value number_format($ges_value2',''.');
    echo 
    $ges_value?>
    ?>
    Die 6.90 stehen hierbei für die Versandkosten. Mein Problem ist nun, dass sich das Script bei jeder Berechnung um rund 1,50 verrechnet. Ich habe bereits die Rundungsschritte testweise entfernt - selbes Problem.

    Selbst wenn ich das Script wie folgt umstelle, tritt der gleiche Fehler auf.
    PHP-Code:
    <?php
    $ges_value 
    $prod1_value;
    echo 
    $ges_value;
    ?>
    Die einzelnen Bestellfunktionen, in denen einfache Multiplikationen durchgeführt werden (Menge * Einzelpreis), funktionieren einwandfrei. Erst wenn die Werte am Ende der Seite aufsummiert werden, tritt die Abweichung auf.

    Könnt Ihr mir helfen?

  • #2
    Wer bei Preisangaben mit round() arbeitet, müsste man eigentlich xxxxxxxxxxxx.
    Entweder number_format() oder sprintf().

    Kommentar


    • #3
      Ich habe alle ROUND-Funktionen entfernt und arbeite jetzt nur noch mit "number_format". Bleibt weiterhin eine abweichung von ca. 0,50.

      Kommentar


      • #4
        Hab noch einmal weitergetestet und das Problem so weit eingegrenzt, dass es an der Addition liegen muss. Bis zur Addition kommen die Werte nämlich korrekt an.

        Kommentar


        • #5
          kann es sein, daß du als preise integerwerte drin hast?
          probier doch mal die 6.90 nach links zu schreiben, so daß er zuerst die kommazahl hat und dann die anderen dazurechnet.
          PHP-Code:
          <?php
          $ges_value 
          =  6.90 $prod1_value $prod2_value $prod3_value 
          ?>

          Kommentar


          • #6
            Selbst wenn ich die 6.90 komplett weglasse und nur mit den Werten auf den Variablen rechne, tritt der Fehler auf. Ich habe den Variablen keinen Typ zugeordnet.

            Bei der Rechnung: 28, 10 + 0 + 0 kommt das Ergebnis 28,00 raus...

            Kommentar


            • #7
              probier mal holzhammermethode...

              PHP-Code:
              <?php
              double 
              ($prod1_value) + double($prod2_value) + double($prod3_value )

              ?>

              Kommentar


              • #8
                prod1_value + $prod2_value + $prod3_value
                Leider kann man dein Problem nicht wirklich nachvollziehen.
                Was sind denn die Werte dieser ^^^ Variablen ?
                Alles andere hier ist nur rumraten und vermuten.

                Kommentar


                • #9
                  Da bekommt ich die Fehlermeldung:

                  Fatal error: Call to undefined function: double() in /[PFAD]/order2.php on line 66

                  Kommentar


                  • #10
                    sorry, hab die funktion mit c++ verwechselt... muss heißen doubleval()

                    Kommentar


                    • #11
                      Keine Fehlermeldung aber wieder der Rechenfehler

                      Kommentar


                      • #12
                        also wenn du 3 variablen erst mit doubleval castest und dann zusammenzählst, kann es keinen rechenfehler geben, wenn du mit echo die variablen direkt vor und nach der addition ausgibst passt das tatsächlich nicht zusammen?

                        Kommentar


                        • #13
                          Zitat von CIX88
                          prod1_value + $prod2_value + $prod3_value
                          Leider kann man dein Problem nicht wirklich nachvollziehen.
                          Was sind denn die Werte dieser ^^^ Variablen ?
                          Alles andere hier ist nur rumraten und vermuten.
                          Probier doch zur Not mal die Werte hier:
                          Zitat von inkai
                          Bei der Rechnung: 28, 10 + 0 + 0 kommt das Ergebnis 28,00 raus...
                          **********************************
                          Nein, ich bin nicht die Signatur.
                          Ich putze hier nur.
                          **********************************

                          Kommentar


                          • #14
                            $prod1_value hat den Wert: 28,10
                            $prod2_value hat den Wert: 16,58
                            $prod3_value hat den Wert: 62,71

                            Kommentar


                            • #15
                              Ups, jetzt seh ich's erst.
                              Sind da wirklich , drin statt .?

                              Wird vielleicht einfach immer der Nachkommaanteil abgeschnitten?
                              Probier mal 28.1, 16.58 und 62.71 .
                              **********************************
                              Nein, ich bin nicht die Signatur.
                              Ich putze hier nur.
                              **********************************

                              Kommentar

                              Lädt...
                              X