Maxx: Kommazahlen in Javascript und Bildschirmausgabe

Beitrag lesen

Sorry, ich war zu voreilig,
ich muss noch einen Kommentar zu den Nachkommastellen loswerden.

Nun ist eigentlich alles erledigt - es könnte jedoch stören, dass Nullen, die auf den letzten Nachkommastellen liegen durch den Interpreter einfach abgeschnitten werden; man also Werte ausgegeben bekommt, die nicht in die Formatierung bzw. dem Design des User-Bildschirms passen wie z.B. 12,3 oder 12 anstelle von 12,30 oder 12,00. Um dieses zu ändern habe ich dir hier noch einen meiner kleinen Algorhythmen angehängt:

var z = 0;   // deklariere ZaehlerVariable

for (i=0; i < wert.length; i++)  // parse wert
 {
  nachKomma = wert.charAt(i); // belege Variable mit StellenWert an ParserPosition i

if (nachKomma == ',' || z != 0) // wenn Komma gefunden oder Zaehler nicht Null, dann ...
  {
   z++;    // erhoehe Zaehlervariable um eins
  }
 }

/* Im folgenden wird der Endwert fuer die Bildschirmausgabe modelliert - er wird gegebenenfalls um Nullen ergaenzt. */

if (z == 0)    // es existieren keine NachkommaStellen (durch Interpreter abgeschnitten)
 {
     formElement[b].value = wert+',00'; // erweiter wert um Komma und zwei Nullen und weise dem Formelement mit dem Index b zu
 }
 else if (z == 2)   // es existiert eine NachkommaStelle
 {
    formElement[b].value = wert+0; // erweiter wert um eine Null und weise diesem dem Formelement mit dem Index b zu
 }
 else if (z == 3)   // es existieren zwei NachkommaStellen
 {
    formElement[b].value = wert; // wert ohne Erweiterung dem Formelement mit dem Index b zuweisen
 }

Diese Funktion ist suboptimal.

// egal wieviele Nackommastellen existieren. Es werden zwei 0'en angehängt.
wert = wert + "00";

// und dann erfolgt die Ausgabe vom Komma ab mit 2 Stellen.
wert.substring(0,wert.search(/,/) + 3);

Einzig für den Fall eines Wertes kleiner 1, oder einer Zahl ganz ohne Nachkommastellen muss eine Unterscheidung getroffen werden.
Im ersten Fall müssen wir eine führende 0 hinbasteln, im zweiten das Komma.

Grüße,

Jochen