お世話になります。
phpにはあまり詳しくないのですが、
プログラムを書いていて困った自体に出くわしました。
以下、数値の切り上げ切捨てを設定した値で行う関数を作りましたが、
同じ値のfloat型の変数を比較しているのですが、違う値だといわれてしまいます。
あまりいい書き方でないかもしれませんが、
詳しい方がいたらお願いします。
簡単な処理だと思い、decimalクラスのようなものは使っていません。
$avgは対象値
$threshold閾値です。
php
1 function customRoundUpDown($avg, $threshold) { 2echo "<br>$threshold... $avg"; 3 $syo = $avg > 0 ? floor($avg) : ceil($avg); 4 $joyo = $avg - $syo; 5 $th = floatval($threshold); 6echo " $joyo > ? "; 7echo "\n dump\n"; 8var_dump( $joyo , $th ); 9echo " $joyo === $th を比較" ; 10var_dump($joyo == $th); 11 if ( $joyo >= $th ) { 12echo " ON! "; 13 return $syo + 1; 14 } 15echo " OFF..."; 16 return $syo; 17 }
この実行を行った際の、標準出力が以下です。
<br>0.4... 2.4 0.4 > ? dump float(0.4) float(0.4) 0.4 === 0.4 を比較bool(false) OFF...float(2)
最後のfloat(2)は呼び出し元でのdumpです。
※事象が起こっているのは
php5.4,
centos6.9環境です。
他の環境では試していません。
宜しくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/04 14:27