Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.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_Floating Point - Fatal编程技术网

十进制乘法JavaScript

十进制乘法JavaScript,javascript,floating-point,Javascript,Floating Point,在Javascript中,我尝试将十进制值乘以10: console.log(1000.56 * 10); console.log(100.56 * 10); 它正在印刷 10005.59999999999 1005.6 为什么?如中所述,JavaScript将浮点数转换为十进制数的默认行为(当转换为字符串时,用于显示、打印或其他目的)是使用刚好足够的数字来唯一标识浮点数 在1000.56*10中,出现两个舍入错误。第一种情况发生在1000.56转换为浮点时。第二种情况发生在执行乘法时。10

在Javascript中,我尝试将十进制值乘以10:

console.log(1000.56 * 10);
console.log(100.56 * 10);
它正在印刷

10005.59999999999
1005.6
为什么?

如中所述,JavaScript将浮点数转换为十进制数的默认行为(当转换为字符串时,用于显示、打印或其他目的)是使用刚好足够的数字来唯一标识浮点数

1000.56*10
中,出现两个舍入错误。第一种情况发生在
1000.56
转换为浮点时。第二种情况发生在执行乘法时。
100.56*10
中也出现两个错误。然而,错误恰好部分取消(它们位于相反的方向,这是可表示值恰好位于何处的有效随机结果),结果非常接近1005.6,JavaScript的格式化算法使用“1005.6”作为结果


1000.56*10
中,结果不是最接近10005.6的可表示浮点数,因此JavaScript使用了额外的数字来区分它。

请检查:,在本例中,浮点数的表示方式是它的限制
(1000.56*10)。toFixed(1)
@baao,它不是重复的…请详细说明为什么你认为它不完全一样question@axiac,为什么相同的行为不会重复。