在将值浮点数和整数相除后,我遇到了 PHP 比较问题。
这是我的代码:
<?php
function test_promo($price) {
$tmpprice = $price*100;
$divprice = $tmpprice/intval($tmpprice);
if ( $divprice > 1 ) {
echo "$price = TRUE\n";
//TODO do something >1
}
else {
echo "$price = FALSE\n";
//TODO do something <=1
}
}
echo "<pre>";
test_promo(2.41); //output--> 2.41 = FALSE
test_promo(2.42); //output--> 2.42 = FALSE
test_promo(2.43); //output--> 2.43 = TRUE
test_promo(2.44); //output--> 2.44 = FALSE
test_promo(2.45); //output--> 2.45 = TRUE
test_promo(2.46); //output--> 2.46 = FALSE
test_promo(2.47); //output--> 2.47 = TRUE
test_promo(2.48); //output--> 2.48 = FALSE
test_promo(2.49); //output--> 2.49 = TRUE
echo "</pre>";
?>
如您所见,结果必须全部为 FALSE,但不是:S
它是 PHP 中的错误还是只有我的计算机(Ubuntu x64)有这个错误?
解决方案 :
作为下面的更正答案,我只需要像这样定义浮点数(之后的数字.
)$divprice = number_format( $newprice/intval($newprice), 2 );