値 float と integer を除算した後の 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) だけにこのバグがありますか?
解決 :
以下の正解のように、.
このように define (の後の数字)として浮動小数点数のみを取得する必要があります。$divprice = number_format( $newprice/intval($newprice), 2 );