我想格式化我的数字以始终显示 2 个小数位,并在适用的情况下四舍五入。
例子:
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
我一直在使用这个:
parseFloat(num).toFixed(2);
但它显示1
为1
, 而不是1.00
。
我想格式化我的数字以始终显示 2 个小数位,并在适用的情况下四舍五入。
例子:
number display
------ -------
1 1.00
1.341 1.34
1.345 1.35
我一直在使用这个:
parseFloat(num).toFixed(2);
但它显示1
为1
, 而不是1.00
。
(Math.round(num * 100) / 100).toFixed(2);
现场演示
请注意,它将四舍五入到小数点后两位,因此输入1.346
将返回1.35
.
Number(1).toFixed(2); // 1.00
Number(1.341).toFixed(2); // 1.34
Number(1.345).toFixed(2); // 1.34 NOTE: See andy's comment below.
Number(1.3450001).toFixed(2); // 1.35
这个答案将失败value = 1.005
。
作为更好的解决方案,可以通过使用以指数表示法表示的数字来避免舍入问题:
Number(Math.round(1.005+'e2')+'e-2'); // 1.01
@Kon 和原作者建议的更简洁的代码:
Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces)
您可以toFixed()
在末尾添加以保留小数点,例如:1.00
但请注意,它将以字符串形式返回。
Number(Math.round(parseFloat(value + 'e' + decimalPlaces)) + 'e-' + decimalPlaces).toFixed(decimalPlaces)
对于现代浏览器,请使用toLocaleString
:
var num = 1.345;
num.toLocaleString(undefined, { maximumFractionDigits: 2, minimumFractionDigits: 2 });
指定语言环境标记作为第一个参数来控制小数点分隔符。对于点,例如使用英语美国语言环境:
num.toLocaleString("en-US", { maximumFractionDigits: 2, minimumFractionDigits: 2 });
这使:
1.35
欧洲的大多数国家/地区使用逗号作为小数点分隔符,因此,例如,如果您使用瑞典/瑞典语言环境:
num.toLocaleString("sv-SE", { maximumFractionDigits: 2, minimumFractionDigits: 2 });
它会给:
1,35
var num = new Number(14.12);
console.log(num.toPrecision(2));//outputs 14
console.log(num.toPrecision(3));//outputs 14.1
console.log(num.toPrecision(4));//outputs 14.12
console.log(num.toPrecision(5));//outputs 14.120