Christoph Zurnieden: genau Rechnen in JS

Beitrag lesen

Hi,

Wieso habe andere Sprachen dann nicht dieses Problem? Also zumindest so offensichtlich.

Alle Sprachen haben das, auch wenn manche das gut verstecken können oder intern andere Methoden verwenden, es ist ein prinzipielles Problem. Der Computer kann nur bis zwei zählen (Binärsystem), Du kannst jedoch bis 10 zählen (Dezimalsystem)und tust es auch. In den meisten Programmiersprachen kannst Du Zahlen auf verschiedene Weisen eingeben. Meistens bevorzugst Du dabei natürlich das Dezimalsystem, das hast Du schließlich schon im Kindergarten gelernt. Im Gegensatz zu Dir versteht die Mehrheit der Rechner aber _nur_ das Binärsystem und muß daher umrechnen. So und nun rechne mal dezimal 0,1 in das Binärsystem um, das ergibt: 0.001100110011100110011 ...
Das zweite Problem ist der strikt begrenzte Speicherplatz. Beides zusammen ergibt dann Dein Problem mit der Genauigkeit. Aber das ist in Wikipedia zusammen mit http://www.kmkorn.de/artikel/fp/fp.htm recht gut erklärt finde ich.
Es gibt im Netz bestimmt noch viel mehr darüber, aber obige Seiten liefern genügend Stichworte für eine Googlesuche.
Wenn Du Englisch kannst z.B. diese Seite:http://docs.hp.com/en/B3906-90006/ch02s02.html bzw die hier http://ae-www.technion.ac.il/InfoPages/FAQ/programming/floatrep.memo

Wie sich das Problem in einer anderen Programmiersprache darstellt steht z.B. ... ah ... hier:http://www.scism.sbu.ac.uk/law/Section2/chap1/s2c1p2b5.html

Deine Rundungsfehler sind also in Wirklichkeit keine Fehler sondern durchaus mit voller Absicht so gesetzt und dann mit den üblichen drei Durchschlägen abgestempelt und genormt (IEEE 754).
"It's not a bug, it's a feature!" ;-)

so short

Christoph Zurnieden