Javascript浮点数字加法不同的输出
为什么这不会产生预期的结果Javascript浮点数字加法不同的输出,javascript,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 为什么第一个和最后一个不会给出预期的结果?这是因为JavaScript使用了IEEE标准进行二进制浮点运算 console.
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
为什么
第一个
和最后一个
不会给出预期的结果?这是因为JavaScript
使用了IEEE标准
进行二进制浮点运算
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
所有的浮点数学
都是这样的,并且基于IEEE 754标准
。JavaScript使用64位浮点表示法
,这与Java的double
相同
可以是的副本,请尝试.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
看看这是一个已知的问题。尝试使用
.toPrecision()
或.toFixed()
这不是问题,但浮点算术谢谢Devang,我知道toFixed
方法。我想知道这意外结果的原因是什么。