如何在Javascript中四舍五入到小数点后1位?

2022-08-29 23:01:49

你能在javascript中将一个数字四舍五入到小数点后1个字符(正确舍入)吗?

我尝试了 *10,圆形,/10,但它在 int 的末尾留下了两个小数。


答案 1

Math.round(num * 10) / 10作品,这里有一个例子...

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

如果您希望它有一个小数位,即使这将是0,然后添加...

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!

编辑:添加具有精确功能的圆形...

使用这个原理,作为参考,这里有一个方便的小圆形函数,需要精度...

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

...用法。。。

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

...默认舍入为最接近的整数(精度 0)...

round(12345.6789) // 12346

...并可用于舍入到最接近的10或100等...

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

...并正确处理负数...

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

...并且可以与toFixed结合使用,以一致地格式化为字符串...

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

答案 2
var number = 123.456;

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