Javascript浮点数加上不同的输出

时间:2013-03-25 12:13:22

标签: javascript

为什么这不能按预期给出结果?

console.log(0.2+0.1); // gives 0.30000000000000004 
console.log(0.2+0.3); // gives 0.5
console.log(0.2+0.5); // gives 0.7
console.log(0.2+0.4); // gives 0.6000000000000001 

为什么firstlast无法按预期提供结果?

2 个答案:

答案 0 :(得分:1)

这是因为JavaScript使用IEEE Standard Binary Floating-Point Arithmetic

所有floating point math都是这样的,基于IEEE 754 standard。 JavaScript使用64-bit floating point representation,它与Java的double相同。

可能是Is floating point math broken?

的副本

答案 1 :(得分:0)

尝试.toFixed()。此方法会格式化一个数字右侧特定位数的数字。

console.log((0.2 + 0.1).toFixed(1)); // gives 0.3
console.log((0.2 + 0.3).toFixed(1)); // gives 0.5
console.log((0.2 + 0.5).toFixed(1)); // gives 0.7
console.log((0.2 + 0.4).toFixed(1)); // gives 0.6