【问题标题】:PHP multiple value for loop [duplicate]循环的PHP多值[重复]
【发布时间】:2017-03-02 09:16:52
【问题描述】:

我有以下 php for 循环

$screen = 1.3; // it can be other decimal value
    for ($i = 1, $k = 0; $i <= $screen; $i += 0.1, $k+=25) {
    echo $i . ' - ' . $k . '<br>';
}

它工作正常,但我想运行 for 循环直到 1.3 - 75 现在它打印我 1.2 - 50。我尝试将 $i

【问题讨论】:

  • 为什么循环使用十进制值?
  • 同意大安
  • 我必须使用十进制值这是我的任务:/
  • 库马尔这是什么意思?
  • 欢迎来到浮点表示法问题

标签: php for-loop


【解决方案1】:

如果您阅读http://php.net/manual/en/language.types.float.php,您应该记住一个很好的声明:

测试浮点值是否相等是有问题的,因为它们在内部表示的方式

为了测试浮点值是否相等,使用了舍入导致的相对误差的上限。该值称为机器 epsilon 或单位舍入,是计算中可接受的最小差异。

根据那里的建议,您需要执行以下操作:

<?php
$screen = 1.3; // it can be other decimal value
$epsilon=0.0001;
for ($i = 1, $k = 0; $i <= $screen+$epsilon; $i += 0.1, $k+=25) {
    echo $i . ' - ' . $k . "\n";
}

【讨论】:

  • 感谢您发布此答案,即使我有一个答案!非常感谢您的参考!前几天有一个几乎类似的问题,有点复杂,你只是帮我解决了它。
【解决方案2】:

您得到了答案,这是实现相同目标的另一种方法,如下所示。 Source

$start = 1;
$end = 1.3;
$place = 1;

$step = 1 / pow(10, $place);

for($i = $start, $k=0; $i <= $end; $i = round($i + $step, $place), $k += 25)
{
    echo $i . ' - ' . $k . '<br>';
}

【讨论】:

    【解决方案3】:

    两种解决方案:

    $screen = 1.4; // it can be other decimal value
        for ($i = 1, $k = 0; $i <= $screen; $i += 0.1, $k+=25) {
        echo $i . ' - ' . $k . '<br>';
    }
    

    或者:

    $screen = 1.3; // it can be other decimal value
        for ($i = 1, $k = 0; $i <= $screen+0.1; $i += 0.1, $k+=25) {
        echo $i . ' - ' . $k . '<br>';
    }
    

    经过测试。两者都有效......据我所知,你想做什么。

    两者的测试输出:

    1 - 0
    1.1 - 25
    1.2 - 50
    1.3 - 75
    

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 2021-12-13
      • 2012-02-28
      相关资源
      最近更新 更多