Lutz T.: Dezimalstellen erzwingen

Beitrag lesen

Aloha again!

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));

Wo ich Antjes tolle Rundungsfunktion gesehen habe, will ich sowas natürlich auch haben, aber eben kürzer. Also hier die Variante für "Runden mit Vorkommastellen". :)

ausgabe = String(parseInt(Math.round("156" / 100)));
ausgabe = (ausgabe=="0"?"0":ausgabe+"00");

Das kann man insgesamt natürlich in eine Funktion gießen, bei der Fallunterscheidung gemacht wird (Runden auf Vorkommastellen/Nachkommastellen) und die Rundungsposition gleich mit angegeben werden kann, aber der Nachteil von allgemeinen Funktionen ist, dass sie viel allgemeines Zeugs mitschleppen müssen, welches für die konkrete Anwendung gar nicht benötigt wird. Spezialfallanpassungen lohnen sich also, weil sie die Funktion übersichtlicher machen und Ladezeit sparen. Außerdem sind kürzere Funktionen natürlich schneller abgearbeitet. :)

  • Sven Rautenberg

Hallo Sven,
wieder was tolles fürs Geldinstitut:
eingabe:0.01
ausgabe:.1
Mein Vorschlag: Wir sollten das so machen, wie bei Prüfungen im Studium. Wer nach dem dritten mal nicht bestanden hat, wird geXt (das wäre hier der Ausschluß vom Wettbewerb). Also einen Versuch würde ich Dir noch geben ;-)
MfG. Lutz T.

PS: Der Spruch

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.

ist echt super. Das hätte ein Werbefachmann einer großen amerikanischen Softwarefirma (deren Name hier nicht genannt werden soll) nicht besser hinkriegen können.