Fixkomma-stellen erzeugen ohne toFixed(2) für Javaskript<v1.5
Manfred Lechner
- javascript
0 Robert Bamler0 Antje Hofmann0 LanX0 Daniel Thoma0 Lutz T.
Ich soll unterschiedliche werte (mal int, mal float) in einer Tabelle immer mit 2 Nachkommastellen darstellen. Die Funktion Wert.toFixed(2) funktioniert erst ab JavaSkript 1.5 und verursacht auf älteren Browsern Fehler.
Hat jemand eine Idee, wie sich das am Effektivsten bewerkstelligen lässt?
z.B. 51 20.3 22.189
soll dargestelllt werden als
51.00 20.30 22.19
Hallo,
Ich soll unterschiedliche werte (mal int, mal float) in einer Tabelle immer mit 2 Nachkommastellen darstellen. Die Funktion Wert.toFixed(2) funktioniert erst ab JavaSkript 1.5 und verursacht auf älteren Browsern Fehler.
Hat jemand eine Idee, wie sich das am Effektivsten bewerkstelligen lässt?
z.B. 51 20.3 22.189
soll dargestelllt werden als
51.00 20.30 22.19
zahl = 51;
pos = ("" + zahl).indexOf(".");
if (pos<0) ergebnis = "" + zahl + ".00";
else {
laenge = ("" + zahl).length;
if (laenge-pos = 2) ergebnis = "" + zahl + "0";
else ergebnis = ("" + zahl).substr(0,pos+3);
}
Müsste so in etwa funktionieren. Hab's aber noch nicht getestet.
Robert
http://www.designauswahl.here.de
mit kostenlosem Webseiten-Generator ROBE.dit
[more than a HTMLE.dit]
Hallo Manfred
Ich soll unterschiedliche werte (mal int, mal float) in einer Tabelle immer mit 2 Nachkommastellen darstellen. Die Funktion Wert.toFixed(2) funktioniert erst ab JavaSkript 1.5 und verursacht auf älteren Browsern Fehler.
Hat jemand eine Idee, wie sich das am Effektivsten bewerkstelligen lässt?
Zwei Varianten:
Im Archiv suchen:
oder:
http://pc-anfaenger.de/script/jsrund.htm
Viele Grüße
Antje
Hi
Ui, der zwote heute der Probleme beim Runden hat.
Habt ihr nie Basic(s) gelernt? ;)
Zahl=Math.round(Zahl*100)/100;
wenn du nicht willst dass ab .5 aufgerundet wird:
Zahl=Math.round(Zahl*100-0.5)/100;
Tschau
Rolf
Hi
Habt ihr nie Basic(s) gelernt? ;)
Zahl=Math.round(Zahl*100)/100;
Erst lesen, dann schreiben;)
in einer Tabelle immer mit 2 Nachkommastellen darstellen
----------------------------------------------------^^^^^^^^^^^
Guid☺
Hi Guido
Habt ihr nie Basic(s) gelernt? ;)
Zahl=Math.round(Zahl*100)/100;
Erst lesen, dann schreiben;)
Mea Culpa, hätte mir das 51.00 Beispiel anschauen sollen
in einer Tabelle immer mit 2 Nachkommastellen darstellen
----------------------------------------------------^^^^^^^^^^^
--------------------------^^^^^ :)
Der Vollständigkeit halber fehlt also noch:
if (Zahl==Math.round(Zahl))
{zstring=Zahl+".00"}
else
{zstring=Zahl+""}
Cheers
Rolf
Hi Guido
Habt ihr nie Basic(s) gelernt? ;)
Zahl=Math.round(Zahl*100)/100;
Erst lesen, dann schreiben;)
Mea Culpa, hätte mir das 51.00 Beispiel anschauen sollen
in einer Tabelle immer mit 2 Nachkommastellen darstellen
----------------------------------------------------^^^^^^^^^^^
--------------------------^^^^^ :)
Der Vollständigkeit halber fehlt also noch:
if (Zahl==Math.round(Zahl))
{zstring=Zahl+".00"}
else
{zstring=Zahl+""}
Cheers
Rolf
Hallo Rolf,
der Vollständigkeit halber solltest Du noch den Code herposten, der auch bei Zahl=51.5 funktioniert. In diesem Fall hätte zstring nach Deiner Berechnung nur eine Nachkommastelle, anstelle der geforderten zwei Nachkommastellen.
Mfg, Lutz.
PS: Ich hab nie Basic(s) gelernt, das war mir zu primitiv.
Hallo Lutz
der Vollständigkeit halber solltest Du noch den Code herposten, der auch bei Zahl=51.5 funktioniert. In diesem Fall hätte zstring nach Deiner Berechnung nur eine Nachkommastelle, anstelle der geforderten zwei Nachkommastellen.
Hmm ich hab die Aufgabenstellung unterschätzt, und nochen IF ist mir
jetzt zu häßlich :)
PS: Ich hab nie Basic(s) gelernt, das war mir zu primitiv.
Ach weist Du ... damals wars mir lieber BASIC auf ner CBM 4000 (?) an der
VHS zu lernen (mehr gabs dort nicht) als noch 5 Jahre zu warten bis mich
ein umgeschulter Mathelehrer endlich in den Computerraum läßt. Sowas wie
den VC20 kam damals leider erst später in die deutschen Kinderzimmern!
JS bzw Scriptsprachen allgemein erinnern mich in Bezug auf den
eingeschränkten Befehlssatz und der schwachen Typisierung tatsächlich sehr
an Commodore-BASIC, da lernte man noch Sachen elementar zu erledigen.
Sowas ähnliches wie den Code oben haben wir tatsächlich in der 4-5. Woche
gemacht, deswegen das Wortspiel.
mfg
Rolf
Hallo
Da haben ja inzwischen ein paar geantwortet. Hier ist noch meine Version (getestet mit Mozilla).
/*
zahl: Die Zahl; rationale Zahl
stellen: Anzahl der Nachkommastellen; natürliche Zahl
nullen: Auffüllen mit Nullen; boolean
function fix(zahl,stellen,nullen) {
var ret = (new String(zahl)).split(".")[0];
if((new String(zahl)).indexOf(".") != -1) {
ret += "." + (new String(zahl)).split(".")[1].substring(0,stellen);
}
else if(nullen) ret += ".";
if(nullen) while(ret.length < (ret.indexOf(".") + new Number(stellen) + 1)) {
ret += "0";
}
return ret;
}
Grüße
Daniel
Ich soll unterschiedliche werte (mal int, mal float) in einer Tabelle immer mit 2 Nachkommastellen darstellen. Die Funktion Wert.toFixed(2) funktioniert erst ab JavaSkript 1.5 und verursacht auf älteren Browsern Fehler.
Hat jemand eine Idee, wie sich das am Effektivsten bewerkstelligen lässt?
z.B. 51 20.3 22.189
soll dargestelllt werden als
51.00 20.30 22.19
Klar doch,
hier mein Lösungs-Vorschlag als Einzeiler:
zahl_fixed=parseInt(zahl)+"."+String(Math.abs(Math.round(zahl*100))%100+100).substr(1,2);
Gruß Lutz