这循环做什么?

时间:2015-08-04 10:58:59

标签: php

所以我一直在做一些数学试图将这个循环用于我的项目,我无法理解无论我怎么努力,为什么这个循环运行两次而不是一次。

$currValue = 40.3;
$maxValue = 40.6;

while ($currValue < $maxValue) {
  $maxValue = $maxValue - 0.3;
  echo $maxValue . '<br>';
}

// Output:
// 40.3
// 40.0

如果有人向我提供了某种解释,或者解决这个问题的方法,我将非常感激。我希望这个问题不是重复的,我没有找到任何类似的东西。

3 个答案:

答案 0 :(得分:1)

运行它应该证明问题是什么。它与IEEE浮点表示相关,对于某些数字而言稍微不准确。

<?php
$currValue = 40.3;
$maxValue = 40.6;

while ($currValue <= $maxValue) {
  $maxValue = $maxValue - 0.3;
  echo 'maxValue -  ' . number_format($maxValue, 20) . ' currValue = ' . number_format($currValue,20) . '<br>';
}

答案 1 :(得分:0)

 $currValue = 40.3;
 $maxValue = 40.6;



 while (round( $currValue, 1) < round($maxValue,1)) {

  $maxValue = $maxValue - 0.3;
  echo $maxValue . '<br>';
 }

答案 2 :(得分:0)

在循环中使用舍入值,如

round($maxValue,1)

而不是

$maxValue