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>