Zahlen skalieren
Jochen P.
- javascript
Hallo,
ich habe ein kleines aber aergerliches problem. Und zwar habe ih eine Zahl, zB. 0.09 als Text. Diese Zahl soll nun mit 1000 dividiert werden. Als Ergebnis wuerde ich gerne 0.00009 erhalten. Angezeigt wird mir aber 0.00008999999999999999. Wie kann ich das Problem loesen?
Gruss, Jochen
Hi, Jochen!
Fließkomma-Mathematik in JavaScript ist nicht sonderlich präzise. Die Einzige Möglichkeit besteht darin, die benötigte Präzision selbst zu erzeugen, indem man das Ergebnis in den Integer-Bereich verschiebt und die Darstellung entsprechend anpasst.
Gruß, LX
Hi,
Angezeigt wird mir aber 0.00008999999999999999. Wie kann ich das Problem loesen?
Jaja, Rechnen mit JS... Du musst festlegen, wie viele Nachkommastellen Du willst und dann sowas durchführen:
var x = "0.09";
x = parseFloat(x);
x = x/1000;
x = Math.round(x*100000);
x = x/100000;
alert(x);
Gruesse, Joachim
@@Joachim:
nuqneH
Jaja, Rechnen mit JS... Du musst festlegen, wie viele Nachkommastellen Du willst und dann sowas durchführen:
var x = "0.09";
x = parseFloat(x);x = x/1000;
x = Math.round(x*100000);
x = x/100000;alert(x);
Nö, „sowas“ geht wesentlich einfacher, denn JavaScript bietet von Haus aus <http://de.selfhtml.org/javascript/objekte/number.htm#to_fixed@title=eine Methode dafür>.
var x = 0.09;
x /= 1000;
alert(x.toFixed(5));
Oder auch
var x = 0.09;
x /= 1000;
alert(x.toPrecision(1));
Qapla'
Hi,
Nö, „sowas“ geht wesentlich einfacher, denn JavaScript bietet von Haus
na sowas! Wieso hat sich toFixed bisher vor mir versteckt?
;-)
Gruesse, Joachim
Besten Dank!
das hat mich auf die richtige Spur gebracht.
Gruss, Jochen
Nabend!
Mit Floatwerten Rechnen ist immer ein Problem, nicht nur in Javascript. Auch z.B. MS Datenbanken speichern bei floats nur mehr oder weniger genaue Annaehrungen. Deshalb wird ja auch die Verwendung von decimal empfohlen. Das gibts bei JS nunmal nicht, also muss man mit Ganzzahlen rechnen und sich diese ggf. ersmal erstellen.