Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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,可能重复: 为什么打印的是0.89999999999而不是0.90000000,因为数字9/10不能在基数2中清晰地表示,就像数字1/3不能在基数10中清晰地表示一样。回答您的问题-浮点具有RAM所能允许的精度。如果您创建一个浮点数1-它实际上可能是1.000000000000001 显然,您的解决方案包括对数字进行四舍五入,或者使用整数作为浮点数的生成方式,某些值无法准确表示。这是这种数据类型的一个限制,您几乎无法修复它,您只需预测它,并利用round或其他方法 问题的根源: 解决办法: 简

可能重复:


为什么打印的是0.89999999999而不是0.90000000,因为数字9/10不能在基数2中清晰地表示,就像数字1/3不能在基数10中清晰地表示一样。

回答您的问题-浮点具有RAM所能允许的精度。如果您创建一个浮点数1-它实际上可能是1.000000000000001


显然,您的解决方案包括对数字进行四舍五入,或者使用整数作为浮点数的生成方式,某些值无法准确表示。这是这种数据类型的一个限制,您几乎无法修复它,您只需预测它,并利用round或其他方法

问题的根源:

解决办法:


简单的舍入误差。浮点数不精确。这使得比较更加复杂。如果我的浮点数=3.0总是会失败。

欢迎使用浮点数!重复的?请参阅:欢迎使用IEEE 754浮点数,也就是说…这与RAM无关,指定精确的浮点值1将只产生1。这与重复的数字有关-就像1/3不能在10进制中表示为有限数字序列一样,数字1/10不能在2进制中表示为有限数字序列。我在这一点上肯定错了。以下是我测试的结果,但得出的结论不正确:1/10*1e63-1e62=1.141798154164768e+46
<html>
<body>

<script type="text/javascript">
 var w = 0;
 var weight1 = parseFloat("0.6");
 var weight2 = parseFloat("0.3");
 w = weight1 + weight2;

 document.write("total weight: " + w);
</script>

</body>
</html>