while($ t< = 1)不迭代$ t = 1

时间:2018-03-27 17:40:08

标签: php precision

我有一个while循环,基本上就是这样:

$t_step = <some value smaller than 1>;
$t = 0;

while ($t <= 1) {
  //do stuff
  $t += $t_step;
}

在某些情况下$t变为1,但在这种情况下循环不会迭代。

如果我写的是:

while($t <= 1.0001)

它继续产生正确的结果,但我不认为这是理想的。

我可以在这做什么?

BTW。:

我已经尝试过了:

$t = 0.0;

while ($t <= 1.0) { … }

在此处指示浮点值...

更新

由于评论中的要求:

 $t_step = 1 / $steps; //$step can be up one hundred right now

2 个答案:

答案 0 :(得分:0)

感谢@ chris85的评论,硬币掉了,我可以像这样重写整个事情:

 for ($i = 0; $i <= $steps; $i++) {
   $t = $i * $t_step;
   …
 }

这消除了数字问题。

答案 1 :(得分:0)

不如使用浮点值进行迭代,只需使用$steps进行迭代,就像我在评论中提到的那样。

然后您可以使用for循环。

您可以在循环中计算$t_step值,并根据需要使用它。

$steps = 100; //or whatever value you're using

for ($i = 0; $i <= $steps; ++$i) {
  $t_step = $i / $steps;
}