What the hell ...

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

  • What the hell ...

    for ($x = -0.3; $x <= 0.3; $x +=0.1)
    echo "$x<br>";

    liefert:

    -0.3
    -0.2
    -0.1
    2.7755575615629E-017
    0.1
    0.2

    ... und wo ist die 0.3?

  • #2
    Und wo sind die Code-tags?
    [FONT="Helvetica"]twitter.com/unset[/FONT]

    Shitstorm Podcast – Wöchentliches Auskotzen

    Kommentar


    • #3
      Und sinnvolle Thread-Titel sehen auch anders aus!


      http://de.wikipedia.org/wiki/Gleitko...che_Grundlagen
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Floats sind nicht exakt. Deshalb ist -0.1 + 0.1 nicht exakt 0 und 0.2 ist nicht exakt 0.2 und wenn man 0.1 dazu addiert ergibt das nur so ungefähr 0.3, was dem Vergleich mit exakten 0.3 nicht standhält.

        Kommentar


        • #5
          Und wenn man Probleme mit diesen systemimmanenten Ungenauigkeiten umgehen will, dann verwendet man entweder entsprechende Rechenverfahren (Stichwort für PHP bspw. BCMath), oder in einem so simplen Fall wie diesem kann man sich auch einfach mit folgendem behelfen:
          PHP-Code:
          for($x=-3$x<=3; ++$x) {
            echo (
          $x/10)."<br>";

          Das erschlägt schon mal das „und wo ist der Wert 0.3?“-Problem.

          Dass die Ergebnisse auch „schön“ sind, mag hier eher Zufall sein (bzw. der Division durch einen „schönen“ Faktor wie 10 geschuldet) - wer Garantie darauf haben möchte, sollte ggf. vor der Ausgabe/Weiterverarbeitung noch runden.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            all right

            Kommentar

            Lädt...
            X