ホームページ  >  記事  >  バックエンド開発  >  intval が小数に遭遇すると 1 減るのはなぜですか?

intval が小数に遭遇すると 1 減るのはなぜですか?

WBOY
WBOYオリジナル
2016-06-13 11:57:211105ブラウズ

intval が小数に遭遇すると 1 減るのはなぜですか?
$a = 2.3;
echo ($a*100);//出力 230
echo intval($a*100);//出力229
初めて使い始めたとき、何が起こっているのかわかりませんでした。
答えを見つける前に、次のように多くの情報を確認しました。
私たちが見たもの: 実際には 2.3。マシン内では次のようになります: 2.299999999... 理由は正確にはわかりません
つまり、2.3*100 は実際には 2.299999..*100=229.99...
次に intval がそれに作用し、小数部分が省略されます。 , したがって、230 ではなく 229 になります
しかし、マシン内では 1.0 も 1.0 であり、0.99999 ではないため、intval(1.0) は 1 のままです...
このメカニズムは小数点以降でのみ機能するはずです

お願いですマスターがこの魔法の問題を根本原因から説明してください
-----解決策---------------------- --------
printf ('%.16f', 2.3); //2.2999999999999998

基本的なコンピューターを学習しているときに 2 進数の 10 進数に関する章を読みませんでしたか知識?

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