Sven Rautenberg: Dezimalstellen erzwingen

Beitrag lesen

Hallo Sven,

Aloha!

es muß schon sehr spät gewesen sein. Mal ein kleiner Test:

Die Uhrzeit des Postings entspricht genau meiner lokalen Uhrzeit. :)

eingabe="1" -> ausgabe=10. Das Script solltest Du möglichst nicht an ein Geldinstitut weitergeben.

Doch, und zwar an meines! :)

PS: Zur Zulassung zum Wettbewerb "kürzeste Lösung für Nachkommastellenproblematik in JS" müssen folgende Kriterien erfüllt sein: Script muß gleichermaßen bei Eingabe als Zahl/String funktionieren und Ergebnis muß gerundet sein, d.h. nicht nur die überzähligen Stellen abschneiden. Ich hoffe auf einen weiteren Vorschlag.

Ok, mal sehen, was ist dann noch tun kann:

ausgabe = String(parseInt(Math.round(eingabe * 100)));
ausgabe = (ausgabe=="0"?"0.00":ausgabe.substring(0,ausgabe.length-2)+"."+ausgabe.substring(ausgabe.length-2,ausgabe.length));

Funktioniert mit allen Zahlenwerten, egal ob positiv oder negativ, hat keine Rundungsfehler beim Zurück-Teilen, immer zwei Nachkommastellen, kann mit Strings, Integern, Floats und Null umgehen und liefert einen schönen String zurück. Kürzer würde nur gehen, indem man auf das Zwischenspeichern der Zwischenergebnisses verzichtet - man berechnet dann aber ziemlich viel unnütz doppelt und dreifach.

- Sven Rautenberg