Ich habe keine Ahnung, wie das geht? Ich füge Komma-Zahlen hinzu, das Ergebnis ist natürlich immer eine Zahl mit viel zu vielen Ziffern nach dem Komma. jemand?
Ich habe keine Ahnung, wie das geht? Ich füge Komma-Zahlen hinzu, das Ergebnis ist natürlich immer eine Zahl mit viel zu vielen Ziffern nach dem Komma. jemand?
Antworten:
EDIT 2 :
Verwenden Sie die Methode des Number
Objekts toFixed
wie folgt:
var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roudedString); // toFixed() returns a string (often suitable for printing already)
Es rundet 42.0054321 bis 42.01
Es rundet 0,005 bis 0,01
Es rundet -0,005 auf -0,01 (der absolute Wert steigt also beim Runden an der Grenze von 0,5)
UPDATE: Beachten Sie, dass die Balgfunktion toFixed () zum Zeitpunkt der Erstellung der Antwort im Jahr 2010 etwas anders funktionierte. toFixed () scheint jetzt einige Rundungen vorzunehmen, jedoch nicht auf rein mathematische Weise. Also sei vorsichtig damit. Machen Sie Ihre Tests ... Die unten beschriebene Methode macht eine gute Rundung, wie es der Mathematiker erwarten würde.
toFixed()
- Die Methode konvertiert eine Zahl in eine Zeichenfolge, wobei eine bestimmte Anzahl von Dezimalstellen beibehalten wird. Eine Zahl wird nicht aufgerundet, sondern abgeschnitten.Math.round(n)
- rundet eine Zahl auf die nächste ganze Zahl. So drehen:0,5 -> 1; 0,05 -> 0
Wenn Sie also runden möchten, sagen Sie die Zahl 0,55555 nur auf die zweite Dezimalstelle. Sie können Folgendes tun (dies ist ein schrittweises Konzept):
0.55555 * 100
= 55,555 Math.Round(55.555)
-> 56.00056.000 / 100
= 0,56000 (0.56000).toFixed(2)
-> 0,56und das ist der Code:
(Math.round(number * 100)/100).toFixed(2);
Das hat bei mir funktioniert:
var new_number = float.toFixed(2);
Beispiel:
var my_float = 0.6666
my_float.toFixed(3) # => 0.667
0.6666.toFixed(3)
wird 0.666
statt 0.667
. @Andrei scheint die richtige Lösung für die richtige Rundung zu haben.
toFixed()
funktioniert perfekt : 0.6666.toFixed(3) # => 0.667
. Ich werde es Ihrer Antwort hinzufügen.
Frühere Antworten haben vergessen, die Ausgabe erneut als Zahl einzugeben. Es gibt verschiedene Möglichkeiten, dies zu tun, je nach Ihrem Geschmack.
+my_float.toFixed(2)
Number(my_float.toFixed(2))
parseFloat(my_float.toFixed(2))
Obwohl wir hier viele Antworten mit vielen nützlichen Vorschlägen haben, fehlen bei jedem noch einige Schritte.
Hier ist also eine Komplettlösung in kleinen Funktionen:
function roundToTwoDigitsAfterComma(floatNumber) {
return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}
Nur für den Fall, dass Sie interessiert sind, wie das funktioniert:
toFixed(2)
, um 2 Ziffern nach dem Komma zu behalten und andere nicht nützliche Teile zu werfenparseFloat()
Funktion als
toFixed(2)
Rückgabezeichenfolge verwendenHinweis: Wenn Sie die letzten zwei Ziffern nach dem Komma behalten, weil Sie mit Geldwerten arbeiten und Finanzberechnungen durchführen , denken Sie daran, dass dies keine gute Idee ist und Sie stattdessen lieber ganzzahlige Werte verwenden sollten.
Verwenden Sie den folgenden Code.
alert(+(Math.round(number + "e+2") + "e-2"));
Ich benutze das:
function round(value, precision) {
if(precision == 0)
return Math.round(value);
exp = 1;
for(i=0;i<precision;i++)
exp *= 10;
return Math.round(value*exp)/exp;
}