$a = 16.4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
誰か私にアドバイスをいただけますか?
$a = 16.4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
誰か私にアドバイスをいただけますか?
SFからの同様の質問
Brother BirdによるPHPのintとfloatの説明
16.4 はマシン内では 16.399999 です......
16.399999*100 = 16.399999。 intval は仮数を直接削除します
リーリー
ショックを受けました
リーリー
実はこれはPHPのバグだと思うのですが、少し注意すれば直ります。
PHP の整数処理には四捨五入、切り捨て、切り上げが含まれます。@lettermu が以前説明したように、バイナリには 16.4 は存在せず、近似することしかできないため、16.4*100 は 1640 ではなく 1639.999999999999999999999 になります。内部で具体的にどのような処理が行われているかは分かりませんが、簡単なテストではPHPが整数に変換する際に四捨五入ではなく切り捨てを行っていることが分かります。
Intval 関数の問題。最初に strval を変換してから int に変換できます。 リーリー
そうだね、23333さんの線の巻き方が目頭が明るくなります