Der Martin: Rechnen mit Zahlen wie ( 10.000,50 € ) in JavaScript

Beitrag lesen

Hallo Claus,

0.01 lässt sich binär nicht exakt darstellen, es sei denn, JavaScript arbeitet völlig anders als üblich. Es besteht dann die Gefahr, dass es bei Additionen zu Fehlern kommt.

genau das passiert in Javascript auch recht schnell; hier wird auch die ganz "normale" Fließkommaarithmetik mit all ihren Unzulänglichkeiten und Problemen eingesetzt - unter anderem die Rundungsfehler, die du andeutest.

Schön in Cent rechnen und nur für die Ausgabe, das Komma bzw. den Punkt an der richtigen Stelle platzieren.

An sich richtig für die interne Darstellung und Rechnung, aber ...

Beim Einlesen geht's umgekehrt. Es ist wirklich nicht schwierig, den String "10.000,50" in die Ganzzahl 1000050 umzuwandeln und umgekehrt die Ganzzahl wieder in den gewünschten String zu konvertieren, der sicher immer genau zwei Nachkommastellen haben soll.

... das Problem ist die Interpretation der Benutzereingaben. Was machst du dann mit der Eingabe "16,000"? Meint der Anwender damit tatsächlich 16EUR, oder eigentlich 16000EUR?
Worauf ich hinaus will: Man sollte sich auf *eine* Sache festlegen. Wenn man den Quatsch mit den Tausender-Trennzeichen konsequent weglässt, lässt sich die Eingabe plötzlich recht eindeutig interpretieren. Punkt oder Komma können dann dieselbe Funktion als Dezimaltrennzeichen haben, und es bleibt dem Benutzer überlassen, welches der beiden Zeichen er nutzen möchte.
Will man Tausender- *und* Dezimaltrennzeichen in der Eingabe zulassen, wird es immer Fälle geben, in denen eine Eingabe formal richtig, aber nicht eindeutig ist.
Ich ärgere mich dagegen immer wieder über Fälle (ebay, Onlinebanking), in denen keine Tausender-Trennzeichen benutzt werden, das System aber trotz Eindeutigkeit hartnäckig auf Eingaben mit Komma als Dezimaltrennzeichen besteht.

Schönen Tag noch,
 Martin

--
Der Alptraum jedes Computers:
"Mir war, als hätte ich gerade eine 2 gesehen."