浮点数和零比较

时间:2016-11-11 18:11:32

标签: php floating-point comparison precision

我有一个简单的PHP任务,总结所有数字的数字。

$number = 345;
$digit = $number;
$sum = 0;

while ($number > 0) {
  $digit = $number % 10;
  $sum += $digit;

  $number /= 10;
}

此解决方案将给出正确的结果。但是,我知道它将进入超过three times的循环方式。最终它将等于零。

为什么会这样?在什么时候,浮点数变为零?仅仅遵循数学原理,这将是一个无限循环,对吧?并且由于有超过3,4和5位数字,最终结果如何不超过12(即使是少量)。

P.S。我知道我应该通过舍入$number值来解决这个问题,但我只关注浮点数及其行为。

1 个答案:

答案 0 :(得分:0)

当您更新号码时,您应该真的这样做

$number -= $digit;
$number /= 10;

浮动特定于平台,请查看此链接 http://php.net/manual/en/language.types.float.php