620 Stimmen

Wie rundet man in Javascript auf 1 Dezimalstelle?

Können Sie eine Zahl in Javascript auf 1 Zeichen nach dem Dezimalpunkt (richtig gerundet) runden?

Ich habe es mit *10, round, /10 versucht, aber es bleiben zwei Dezimalstellen am Ende der int.

18 Stimmen

Math.round(n * 10) / 10 funktioniert. Wie lautet Ihr Code?

0 Stimmen

1108voto

Billy Moon Punkte 54553

Math.round(num * 10) / 10 funktioniert, hier ist ein Beispiel...

var number = 12.3456789
var rounded = Math.round(number * 10) / 10
// rounded is 12.3

wenn Sie wollen, dass es eine Dezimalstelle hat, auch wenn das eine 0 wäre, dann fügen Sie...

var fixed = rounded.toFixed(1)
// fixed is always to 1 d.p.
// NOTE: .toFixed() returns a string!

// To convert back to number format
parseFloat(number.toFixed(2))
// 12.34
// but that will not retain any trailing zeros

// So, just make sure it is the last step before output,
// and use a number format during calculations!

EDIT: Rundung mit Präzisionsfunktion hinzufügen...

Unter Anwendung dieses Prinzips finden Sie hier eine praktische kleine Rundungsfunktion, die die Genauigkeit...

function round(value, precision) {
    var multiplier = Math.pow(10, precision || 0);
    return Math.round(value * multiplier) / multiplier;
}

... Verwendung ...

round(12345.6789, 2) // 12345.68
round(12345.6789, 1) // 12345.7

... rundet standardmäßig auf die nächste ganze Zahl (Genauigkeit 0) ...

round(12345.6789) // 12346

... und kann zum Runden auf die nächsten 10 oder 100 usw. verwendet werden...

round(12345.6789, -1) // 12350
round(12345.6789, -2) // 12300

... und korrekter Umgang mit negativen Zahlen ...

round(-123.45, 1) // -123.4
round(123.45, 1) // 123.5

... und kann mit toFixed kombiniert werden, um konsistent als String zu formatieren ...

round(456.7, 2).toFixed(2) // "456.70"

163voto

Pablo Fernandez Punkte 98441
var number = 123.456;

console.log(number.toFixed(1)); // should round to 123.5

54voto

Jasper de Vries Punkte 16523

Wenn Sie Math.round(5.01) erhalten Sie 5 anstelle von 5.0 .

Wenn Sie toFixed Sie stoßen auf Rundung Ausgaben .

Wenn Sie das Beste aus beiden Welten wollen, kombinieren Sie beides:

(Math.round(5.01 * 10) / 10).toFixed(1)

Vielleicht möchten Sie dafür eine Funktion erstellen:

function roundedToFixed(input, digits){
  var rounder = Math.pow(10, digits);
  return (Math.round(input * rounder) / rounder).toFixed(digits);
}

43voto

Kevin Leary Punkte 7707

lodash hat eine round Methode:

_.round(4.006);
// => 4

_.round(4.006, 2);
// => 4.01

_.round(4060, -2);
// => 4100

Dokumente .

Quelle .

16voto

Rusty Punkte 3390

Sie können einfach Folgendes tun:

let n = 1.25
let result = Number(n).toFixed(1)
// output string: 1.3

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X