可能重复:
PHP数学精度
下面的php代码输出7,但我期望输出8。为什么有区别?
<?php echo (int)((0.1+0.7)*10); ?>
因为浮点表示不准确,0.1+0.7不等于0.8。它可能比这少了一点点。当您使用int(..)
时,它会将其截断为7。
其他人已经指出了这个问题。如果你使用的是固定数量的小数位数(例如,在使用货币时),你最好计算和存储美分,并在向用户显示值时将其转换回美元/欧元/随便什么。
可能重复:
PHP数学精度
下面的php代码输出7,但我期望输出8。为什么有区别?
<?php echo (int)((0.1+0.7)*10); ?>
因为浮点表示不准确,0.1+0.7不等于0.8。它可能比这少了一点点。当您使用int(..)
时,它会将其截断为7。
其他人已经指出了这个问题。如果你使用的是固定数量的小数位数(例如,在使用货币时),你最好计算和存储美分,并在向用户显示值时将其转换回美元/欧元/随便什么。