所以我一直在做一些数学试图将这个循环用于我的项目,我无法理解无论我怎么努力,为什么这个循环运行两次而不是一次。
$currValue = 40.3;
$maxValue = 40.6;
while ($currValue < $maxValue) {
$maxValue = $maxValue - 0.3;
echo $maxValue . '<br>';
}
// Output:
// 40.3
// 40.0
如果有人向我提供了某种解释,或者解决这个问题的方法,我将非常感激。我希望这个问题不是重复的,我没有找到任何类似的东西。
答案 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