PHP,如果条件在带浮点数的for循环中

时间:2019-07-07 19:05:01

标签: php loops

for循环中的if条件将在(n)次之后停止工作。

我正在使用PHP 7.3.6-1 + ubuntu18.04.1 + deb.sury.org + 1

给出以下代码:

for($i = 0.99; $i<= 30.99; $i++){
    echo $i;
    if($i == 10.99){
        echo '<--- selected';
    }
    echo '<br>';
}

输出

0.99
1.99
2.99
3.99
4.99
5.99
6.99
7.99
8.99
9.99
10.99<--- selected
11.99
12.99
13.99
14.99
15.99
16.99
17.99
18.99
19.99
20.99
21.99
22.99
23.99
24.99
25.99
26.99
27.99
28.99
29.99

当条件介于0.99 - 15.99之间时,此情况仍然适用,但是,不会返回在16.99 - 29.99<--- selected之间进行条件更改。

我在循环中使用int进行了几次测试,如下所示,它似乎工作正常。

for($i = 0; $i<= 30; $i++){
    echo $i;
    if($i == 18){
        echo '<--- selected';
    }
    echo '<br>';
}

我认为问题与浮动广告素材(0.99-30.99)有关。

2 个答案:

答案 0 :(得分:1)

一种可能的解决方案是使数字成为字符串,然后对它们进行比较。
一侧使用“ 10.99”,另一侧使用number_format

for($i = 0.99; $i<= 30.99; $i++){
    echo $i;
    if(number_format($i,2) == "22.99"){
        echo '<--- selected';
    }
    echo "\n";
}

https://3v4l.org/mvOR3

答案 1 :(得分:0)

在开始比较之前,让我们清洗浮子。

import { Watch, Vue } from 'vue-property-decorator';

export default class SomeClass extends Vue {
   ...

   @Watch('item.someOtherProp')
   someOtherPropChange(newVal, oldVal) {
      // do something
   }

   ...
}