Wie kann ich eine Nummer in Javascript abrunden?



Answers

Rund in Richtung negativer Unendlichkeit - Math.floor()

+3.5 => +3.0
-3.5 => -4.0

Round in Richtung Null - normalerweise Truncate() , aber nicht von JavaScript unterstützt - kann mit Math.ceil() für negative Zahlen und Math.floor() mit positiven Zahlen emuliert werden.

+3.5 => +3.0 using Math.floor()
-3.5 => -3.0 using Math.ceil()
Question

Wie kann ich eine Nummer in JavaScript abrunden?

math.round() funktioniert nicht, weil es auf die nächste Dezimalzahl math.round() .

Ich bin nicht sicher, ob es einen besseren Weg gibt, es zu tun, als es am Dezimalpunkt auseinander zu brechen, um das erste Bit zu behalten. Da muss sein...




Das Runden einer number Richtung 0 kann durch Subtrahieren der mit Vorzeichen versehenen gebrochenen number % 1 :

rounded = number - number % 1;

Wie Math.floor (Runden in Richtung -Infinity ) ist diese Methode perfekt genau.

Es gibt jedoch Unterschiede in der Handhabung von -0 , +Infinity und -Infinity :

Math.floor(-0) => -0
-0 - -0 % 1    => +0

Math.floor(Infinity)    => Infinity
Infinity - Infinity % 1 => NaN

Math.floor(-Infinity)     => -Infinity
-Infinity - -Infinity % 1 => NaN



Hat heute mit jemand anderem Code herumgetüftelt und folgendes gefunden, was auch auf Runden scheint:

var dec = 12.3453465,
int = dec >> 0; // returns 12

Weitere Informationen zur Sign-propagierenden Rechtsverschiebung (>>) finden Sie unter MDN Bitwise Operators

Es hat eine Weile gedauert, bis ich herausgefunden hatte, was das tat: D

Aber wie oben hervorgehoben, funktioniert Math.floor () meiner Meinung nach besser lesbar.




Sie können versuchen, diese Funktion zu verwenden, wenn Sie auf eine bestimmte Anzahl von Dezimalstellen abrunden müssen

function roundDown(number, decimals) {
    decimals = decimals || 0;
    return ( Math.floor( number * Math.pow(10, decimals) ) / Math.pow(10, decimals) );
}

Beispiele

alert(roundDown(999.999999)); // 999
alert(roundDown(999.999999, 3)); // 999.999
alert(roundDown(999.999999, -1)); // 990





Links