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?
javascript
math
rounding
Sten Van den Bergh
quelle
quelle
Antworten:
EDIT 2 :
Verwenden Sie die Methode des
Number
ObjektstoFixed
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)
jsFiddle Beispiel
quelle
3.1415
wird3.00
in deinem Beispiel.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,555Math.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);
quelle
Das hat bei mir funktioniert:
var new_number = float.toFixed(2);
Beispiel:
var my_float = 0.6666 my_float.toFixed(3) # => 0.667
quelle
0.6666.toFixed(3)
wird0.666
statt0.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))
quelle
Dies ist nicht wirklich CPU-freundlich, aber:
Math.round(number*100)/100
funktioniert wie erwartet.
quelle
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 alstoFixed(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.
quelle
Verwenden Sie den folgenden Code.
alert(+(Math.round(number + "e+2") + "e-2"));
quelle
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; }
quelle