$a = 2.3;
echo ($a*100);//Output 230
echo intval($a*100);//Output 229
初めて使い始めたときは何が何だか分かりませんでした。物事
答えを見つける前に、次のように多くの情報を確認しました
私たちが見たこと: 2.3 は、実際にはマシン内で次のようになります: 2.299999999... 具体的な理由はわかりません
つまり、2.3*100 は実際には、マシンでは 2.299999..* 100=229.99...
その後、 intval がそれに作用し、小数部分が省略されるため、230 ではなく 229 になります
しかし、 intval(1.0) は、 1.0 も 1.0 であるため、 1 のままです。 0.99999 ではなく、マシンです。 ..
このメカニズムは小数点以降でのみ機能するはずです
この魔法の問題を根本原因から説明してください
printf('%.16f', 2.3) ; //2.2999999999999998
コンピューターの基本知識を学ぶときに、2 進数の 10 進数に関する章を読みませんでしたか?
printf('%.16f', 2.3); //2.2999999999999998
コンピューターの基本知識を学んでいたとき、2 進数の 10 進数に関する章を読みませんでしたか?