100 * 4.9 = 490.00000000000005 ???
Utz
- javascript
0 Ed X0 Carsten P.0 ich0 Danke!
Utz
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>
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
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
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
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
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
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.
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
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
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
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
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
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.
Sicher bringt jemand (Swen?) gleich einen Link zur ganzen Geschichte.
http://www.morgenwelt.de/wissenschaft/9906-zahlen13.htm
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...
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
Hi zusammen,
vielen Dank für die Erklärungen & Links - schon wieder ein kleines bisschen schlauer geworden!
Grüße,
Utz