Utz: 100 * 4.9 = 490.00000000000005 ???

Hi zusammen,

mein Computer kann nicht rechnen!

IE 5 behauptet: 100 * 4.9 = 490.00000000000005

NS 4.03, Mozilla 0.8 und Opera 5 sind großzügiger: 100 * 4.9 = 490.00000000000006

Ist bestimmt ein altbekannter Bug, nur ich kenne ihn nicht. Kennt ihn sonst wer? Hier mein Testcode, falls jemand es probieren will:

<html>
<head>
<title>Rechentest</title>
<script type="text/javascript">
<!--
function rechentest() {
 input = 100;
 pr = 4.9;
 alert('input: ' + input);
 alert('pr: ' + pr);
 alert('input * pr: ' + input * pr);
}
//-->
</script>
</head>
<body>
<a href="#" onClick="rechentest(); return false;">Rechentest</a>
</body>
</html>

  1. Hi,

    mein Computer kann nicht rechnen!

    Nur gut, dass dein Computer nicht zurückmotzen kann ;-)

    Ist bestimmt ein altbekannter Bug, nur ich kenne ihn nicht.

    Der Kandidat erhält einen Leuchtkeks.

    Javascript rechnet intern mit dem Binären Zahlensystem, und da gibt es Umrechnungsschwierigkeiten.

    http://www.rabich.de/javascript_goodies/zahlenspiele.htm#Fehlerkorrektur
    hier gibt es etwas abhilfe.

    Bye Ed X

  2. Hallo Utz,

    eine ausführliche Problembeschreibung gibt es hier: http://screenexa.net/de.comp.lang.javascript/faq/antwort.phtml?Antwort=rechnen_rechnen.
    Das Problem tritt übrigens nicht nur in Javascript, sondern auch in anderen Programmiersprachen auf.

    Viele Grüße
    Carsten

    1. Hi,

      Das Problem tritt übrigens nicht nur in Javascript, sondern auch in anderen Programmiersprachen auf.

      genauer: Das Problem tritt mit Computern auf. Die Ursache ist, daß die Evolution (wenn es ein Gott war, muß er sadistisch sein, was den meisten Religionen widerspricht) uns mit einer denkbar ungünstigen Zahl von Fingern ausgestattet hat, auf denen ein vernünftiges Zahlensystem nicht beruhen sollte. Wären wir mit sechs statt acht Fingern geboren worden, wäre unser Zahlensystem (durch die beiden Daumen) oktal, womit die Umrechnung vom Binären (Computer) in die menschenlesbare Darstellung weniger problematisch wäre.

      Cheatah

      1. Moin

        Wären wir mit sechs statt acht Fingern geboren worden

        Ah, jetzt weiss ich auch, warum du startreck magst

        Aus http://sf.exit.mytoday.de/st-voyager/fan fiction/die fremden.html:

        [...] Als der Captain und Tuvok die Zelle des Fremden verlassen wollen, sieht der seine Chance gekommen, und zieht an einem seiner 6 Finger [...]

        Viele Grüße

        Swen, sich fragend, ob er mit 14 Fingern und zwei Daumen mehr oder weniger Felher auf der Tastatur machen würde

      2. Hi Cheatah,

        genauer: Das Problem tritt mit Computern auf. Die Ursache ist, daß die Evolution (wenn es ein Gott war, muß er sadistisch sein, was den meisten Religionen widerspricht) uns mit einer denkbar ungünstigen Zahl von Fingern ausgestattet hat,

        Also bevor ihr euch jetzt alle 2 Finger abhackt:

        Auch im Oktalsystem würden Rundungsfehler auftauchen,
        in _jedem_ Zahlensystem gibt es reele Zahlen die sich nicht endlich darstellen lassen und deswegen in der Mantisse abgeschnitten (die Computerhand) werden, wie z.B. 0.3333333333333333333333333333333333 .... im Dezimalsystem entspricht 0.1 im 3-ersytem (Hühnermathematik ;) oder halt 4.9 (Dezimal) im eval(6Finger+2Daumen)-System.

        Computer könnten nun sehr wohl intern mit Perioden oder mit dynamisch angepassten Zahlenbasen rechnen, leider würde man sich nicht lange seines Sieges freuen, wenn so was fieses wie Pi oder e auftaucht _muss_ gehackt werden, und da hilft auch keine Ausnahmebehandlung, denn es gibt viele so boese Zahlen, unendlich viele,
        sogar überabzählbar viele!

        Gottes Murksdesign betrifft also nicht unsere Hände, sondern das ganze mathematische Modell bzw. unsere unzulänglichen Hirne die dafür noch kein geschlossenes Modell ersinnen konnten!

        In diesem Sinne - Kopf ab!

        Rolf der Murksdesignte

        1. Moin,

          Auch im Oktalsystem würden Rundungsfehler auftauchen,

          ja...

          in _jedem_ Zahlensystem gibt es reele Zahlen [...]

          ja. Aber darum geht es (hier) nicht.
          Es geht um die Umrechnung dezimal <-> dual, die mit dem Faktor ln(2) zusammenhaengt. Deshalb erhoeht sich die Ungenauigkeit um ein Vielfaches (Darstellung mal Umrechnung ;)

          Viele Gruesse,

          n.d.p.

          1. Hi n.d.

            ja. Aber darum geht es (hier) nicht.

            Da haste wieder recht, zu schnell gelesen, sorry, moment ...

            ... hack... spritz ...blubber ...

            ...gemaeB meiner Jakuzaehre uebergebe ich hier meine Non-Oktalen
            Zeigefinger und bitte blutend um Vergebung! ;)

            Kotau

            Rolf

      3. Hallo Cheatah,

        [...]

        Wären wir mit sechs statt acht Fingern geboren worden, wäre unser Zahlensystem (durch die beiden Daumen) oktal, womit die Umrechnung vom Binären (Computer) in die menschenlesbare Darstellung weniger problematisch wäre.

        Könntest Du mir vielleicht erklären, was ein Daumen ist? ;-)

        Gruß AlexB*derseinebiologiekenntnissenzusammensucht*ausW

        1. Hi,

          Könntest Du mir vielleicht erklären, was ein Daumen ist? ;-)

          ein sich vorwiegend an den extremen Gliedmaßen von Menschen befindlicher Körperteil, der auf Hämmer eine extrem hohe Affinität ausübt.

          HTH :-)

          Cheatah

      4. Hi Cheati :-)

        Das Problem tritt übrigens nicht nur in Javascript, sondern auch in anderen Programmiersprachen auf.

        genauer: Das Problem tritt mit Computern auf. Die Ursache ist, daß die Evolution (wenn es ein Gott war, muß er sadistisch sein, was den meisten Religionen widerspricht) uns mit einer denkbar ungünstigen Zahl von Fingern ausgestattet hat, auf denen ein vernünftiges Zahlensystem nicht beruhen sollte. Wären wir mit sechs statt acht Fingern geboren worden, wäre unser Zahlensystem (durch die beiden Daumen) oktal, womit die Umrechnung vom Binären (Computer) in die menschenlesbare Darstellung weniger problematisch wäre.

        Bist du sicher (?) das ein Zusammenhang zwischen der Anzahl der Finger / Zehen und dem Dezimalsystem besteht?
        MfG
        Moldawian, der sich da nicht so sicher ist

        1. Moin!

          Bist du sicher (?) das ein Zusammenhang zwischen der Anzahl der Finger / Zehen und dem Dezimalsystem besteht?

          Interessante Frage. Auf den ersten Blick ist es ja naheliegend. Allerdings wurde, soviel ich weiss, die 0 den anderen 9 Ziffern z.B. erst spaeter hinzugefuegt (als man merkte, dass die ziemlich praktisch ist *g*), und da fragt man sich natuerlich, warum sollten vorher von den 10 Fingern nur neun benutzt werden.

          Sicher bringt jemand (Swen?) gleich einen Link zur ganzen Geschichte.

          So long

          1. Allerdings wurde, soviel ich weiss, die 0 den anderen 9 Ziffern z.B.
            erst spaeter hinzugefuegt (als man merkte, dass die ziemlich praktisch
            ...

            http://www.morgenwelt.de/wissenschaft/9906-zahlen02.htm

            Sicher bringt jemand (Swen?) gleich einen Link zur ganzen Geschichte.

            http://www.morgenwelt.de/wissenschaft/9906-zahlen13.htm

            1. Sicher bringt jemand (Swen?) gleich einen Link zur ganzen Geschichte.
              http://www.morgenwelt.de/wissenschaft/9906-zahlen13.htm

              -> http://www.saar.de/~luci/Zahlraum/Null_links_Zitat1.html

  3. Hi zusammen,

    mein Computer kann nicht rechnen!

    IE 5 behauptet: 100 * 4.9 = 490.00000000000005

    NS 4.03, Mozilla 0.8 und Opera 5 sind großzügiger: 100 * 4.9 = 490.00000000000006

    SCHÖN!!! Pi ist dann wohl bald 0.815. Wenn da im Normalfall wenigstens etwas mit Dezimalstellen rauskommen würde... Aber so? Ihr Leute des Browserentwikelns. Was wollt Ihr uns damit sagen?? Zahlen sind unwichtig und genauigkeit ist Luxus??? Ihr solltet euch mal einen Taschenrechner nehmen. Möglichst keinen, den Ihr selbst geschrieben habt...

    Ein Rundungsfehler kann das bei so einem Teil wohl kaum sein...

    Viel Spaß beim Umschreiben............. Aber das wird wohl wieder keiner der Jungs für ein ernstes Problem halten, und auf den letzten Platz in der "to-do"- Liste verfrachten.

    Viel Spaß... wie gesagt...

    1. Hallo Du,

      ein normalsterblicher Taschenrechner kann 10 Stellen anzeigen und würde das Ergebnis der obigen Rechnung als 490 ausgeben...
      Ich wäre froh, wenn ein bißchen mehr im Leben eine Genauigkeit von 99,999999...% hätte.

      Viele Grüße
      Carsten

  4. Hi zusammen,

    vielen Dank für die Erklärungen & Links - schon wieder ein kleines bisschen schlauer geworden!

    Grüße,

    Utz