&安培;&安培;不在If()语句中工作

时间:2016-11-07 18:01:54

标签: php if-statement

由于一些奇怪的原因,这个if语句没有找到匹配,当值明显等于$ change_pct_candle值时,如下面的var_dump所示

if($change_pct_candle[1] >= 0.38022813688214 && $change_pct_candle[2] >= 1.3487475915221) {} 

如果我尝试:

if($change_pct_candle[1] >= 0.38022813688214) {} 

有效。如果我尝试:

if($change_pct_candle[2] >= 1.3487475915221) {}

有效。当我尝试:

if($change_pct_candle[1] >= 0 && $change_pct_candle[2] >= 1) {} 

有效。当我尝试:

if($change_pct_candle[1] >= 0.38022813688214 && $change_pct_candle[2] >= 1.3487475915221) {} 

它不起作用。我在这里做错了吗?

$ change_pct_candle的var_dump是:

array(7) {
  [0]=>
  float(-0.10984848484848)
  [1]=>
  float(0.38022813688214)
  [2]=>
  float(1.3487475915221)
  [3]=>
  float(-0.57471264367815)
  [4]=>
  float(0.19193857965451)
  [5]=>
  float(0.19230769230769)
  [6]=>
  float(0.1926782273603)
}

1 个答案:

答案 0 :(得分:-1)

原因是"浮点数的精度有限"。 只需从php.net查看此页面并密切关注有关此概念的警告。这将解释为什么,并希望该怎么做。 http://php.net/manual/en/language.types.float.php

所以永远不要将浮点数结果信任到最后一位数,并且不要直接比较浮点数是否相等。