Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript浮点数字加法不同的输出_Javascript - Fatal编程技术网

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
方法。我想知道这
意外结果的原因是什么。