运算符“*”和“/”并不总是完美的,例如:
32.09 * 100 = 3209.0000000000005
100 / (1 / 32.09) = 3209.0000000000005
解决方法:
使用小数的一种简单的解决方案是使用 .toFixed(2) ,其中“2”是您想要的小数位数。但是你必须考虑到这会给你一个字符串,并且它会四舍五入。
45.6789.toFixed(2) —> "45.68" as String
其他最完整的选项是使用 .toLocaleString 将数字正确转换为您想要的国家代码。您可以设置一对参数以将小数值始终固定为 2。这也会返回一个字符串:
(654.3453).toLocaleString(
'en-US',
{minimumFractionDigits: 2, maximumFractionDigits: 2},
) —> "654.35" as String
如果你需要它作为一个数字,你可以把它包装成 Number( ... ) :
Number((654.3453).toLocaleString(
'en-US',
{minimumFractionDigits: 2, maximumFractionDigits: 2},
)) —> 654.35 as Number
如果您只想要一个没有小数的数字,请使用其中一种方法来确保结果没有小数。
Math.trunc(32.09); —> 32 as Number
(32.09).toFixed(0); —> “32” as String
32.09 | 0; —> 32 as Number