下面是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.");
}