<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>
为什么打印0.8999999999999999而不是0.90000000
答案 0 :(得分:4)
因为数字9/10不能在基数2中干净地表示,就像数字1/3不能在基数10中清晰地表示一样。
答案 1 :(得分:1)
问题的根源:
http://support.microsoft.com/kb/42980
解决方法:
Is there a definitive solution to javascript floating-point errors?
How to deal with floating point number precision in JavaScript?
http://bytes.com/topic/javascript/answers/682011-solution-floating-point-errors
答案 2 :(得分:0)
制作浮点数的方法,无法准确表示某些值。这是这种数据类型的限制,你可以做很少甚至没有什么可以解决它,你必须只是预测到这一点,并利用圆形或其他东西。
答案 3 :(得分:0)
简单的舍入错误。浮点数不精确。这使得比较更加复杂。例如。如果(my_float == 3.0)总是会失败。
答案 4 :(得分:-1)
要回答您的问题 - 浮点数的精确度与RAM允许的精度相同。如果您创建一个浮动数字1 - 它实际上可能是1.000000000000000000001
显然,您的解决方案包括舍入数字或使用整数