我有一系列数字。例如:
3, 3.4567, 4.5, 5.72, 6.12345
如果原始数字是整数,或者小数点后的数字不超过3位,如果超过3,则如何显示小数点后最多3位?这就是我想要的:
3, 3.456, 4.5, 5.72, 6.123
我曾经使用过固定(),但它使得每个数字在小数点后面都有3位数。
是否有任何Javascript方法可用于实现我想要的目标?
---------更新-----------
我在指针中使用了这个:
Math.round(原始* 1000)/ 1000
来自旧帖子。它似乎有效。
答案 0 :(得分:2)
您可以使用Number.prototype.toPrecision()
舍入到小数点后的最接近的3位数,然后parseFloat()
结果:
var num = 6.12345;
var precise = num.toPrecision(4); //"6.123"
var result = parseFloat(precise); //6.123
var num = 4.5;
var precise = num.toPrecision(4); //"4.500"
var result = parseFloat(precise); //4.5
如果这些数字在数组中,您可以创建一个函数customPrecision
来映射:
function customPrecision(num) {
return parseFloat(num.toPrecision(4));
}
var nums = [3, 3.4567, 4.5, 5.72, 6.12345];
var preciseNums = nums.map(customPrecision); //[3, 3.457, 4.5, 5.72, 6.123]
答案 1 :(得分:1)
不确定这是最好的方法,但它有效
Math.floor(3.4567*1000)/1000
Math.floor(6.12345*1000)/1000
答案 2 :(得分:1)
在打印之前,使用一元+
运算符将固定字符串强制转换为数字:
var floats = [3, 3.4567, 4.5, 5.72, 6.12345]
function toMax3Decimals (x) {
return +x.toFixed(3)
}
console.log(floats.map(toMax3Decimals))