PHPの整数変換エラー?

WBOY
WBOYオリジナル
2016-08-04 09:20:46956ブラウズ

$a = 16.4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
PHPの整数変換エラー?

誰か私にアドバイスをいただけますか?

返信内容:

$a = 16.4 *100;
echo $a;
echo "
";
echo intval($a);
echo "
";
PHPの整数変換エラー?

誰か私にアドバイスをいただけますか?

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さんの線の巻き方が目頭が明るくなります

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。