为什么<=运算符在PHP中为真却返回假?


How come the <= operator return false when it is true in PHP?

下面是php代码:当$lat和$lng在增量之后等于0.087时,while循环返回false并在它应该返回true时中断循环,因为它是一个<=操作符。有人能给我解释一下吗?

$lat = 0.029;
$lng = 0.029; 
while ( $lat <= 0.087 && $lng <= 0.087 ){
   $lat += 0.029;
   $lng += 0.029;
}

就像他们在这里讨论的那样,看起来你遇到了浮点表数法的问题:
PHP舍入错误
对此该怎么办是另一个问题……您可以像这样使用bcadd函数:

$lat = 0.029;
$lng = 0.029;
$c = 0.029;
while ( $lat <= 0.087 && $lng <= 0.087){
   $lat = bcadd($lat, $c, 3);
   $lng = bcadd($lng, $c, 3);
}

检查您是否有BC Math或GMP。

<?php
if (class_exists("GMP")) {
  $lat = new GMP(0.029);
  $lng = new GMP(0.029);
  while ($lat <= 0.087 && $lng <= 0.087) {
    $lat += 0.029;
    $lng += 0.029;
  }
}
elseif (function_exists("bcadd")) {
  $lat = 0.029;
  $lng = 0.029;
  while ($lat <= 0.087 && $lng <= 0.087) {
    $lat = bcadd($lat, 0.029, 3);
    $lng = bcadd($lng, 0.029, 3);
  }
}
else {
  trigger_error("Please install GMP of BC Math.");
}