这是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;
}
答案 0 :(得分:0)
看起来你在这里讨论的浮点表示法有问题:
PHP rounding error
该怎么办是另一个问题......你可以像这样使用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);
}
答案 1 :(得分:0)
<?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.");
}