ホームページ  >  記事  >  バックエンド開発  >  【PHP浮動小数点数問題】以下のPHPコードが出力される原因は何でしょうか?

【PHP浮動小数点数問題】以下のPHPコードが出力される原因は何でしょうか?

WBOY
WBOYオリジナル
2016-07-21 18:01:32764ブラウズ

コメントはこの行の出力です。浮動小数点数の 1 桁が 6、7、8、または 9 の場合、出力結果が期待どおりにならないことがわかります。
var_dump(intval("10.40"*100)); // 1040
var_dump(intval("11.40"*100)) // 1140
var_dump("12.40"*100); (intval("13.40"*100)); // 1340
var_dump(intval("14.40"*100)) // 1440
var_dump("15.40"*100); ("16.40"*100)); // 1639
var_dump(intval("17.40"*100)) // 1739
var_dump("18.40"*100); 19.40"*100)); // 1939
返信内容:
まず、PHP の浮動小数点に関するすべての「偽り」を読んでください

次に、次をお読みください: PHP 浮動小数点数に関するよくある質問への回答 詳細な説明については、ここを参照してください:
0.300000000000000004 その理由は、バイナリでは 1/10 などの小数を正確に表現できないためです。この問題は、浮動小数点コンテンツを格納するために IEEE754 標準を使用するすべての言語に存在します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。