[英]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);
}
<?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.");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.