- ベストアンサー
PHPの計算式について
$a_amari = (9.7 * 100) % 10; $b_amari = 970 % 10; 上の式を実行すると 下のような結果になりました。 $a_amari = 9 $b_amari = 0 どうして結果が違ってくるのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
浮動小数点の精度がいーかげんだから。
その他の回答 (1)
- sisya
- ベストアンサー率39% (97/244)
回答No.2
プログラム(というかコンピュータ)は内部的には2進数と言う「2」で繰り上がる計算方式を用いています。 ですから私たちが使っている10進数で「9.7」と書いても内部的には正確に「9.7」という数値をもてないんです。 例のように「9.7×100」を行った時、結果は「970」になるのではなく 「9.7(に近い数)×100」となり「約970」になってしまいます。 それを「%10」した場合、数値が10の倍数より微妙に足りないので答えが「9」になってしまうのです。 (例:969.99999 % 10 = 9)