• ベストアンサー

PHPの計算式について

$a_amari = (9.7 * 100) % 10; $b_amari = 970 % 10; 上の式を実行すると 下のような結果になりました。 $a_amari = 9 $b_amari = 0 どうして結果が違ってくるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

浮動小数点の精度がいーかげんだから。

参考URL:
http://jp.php.net/manual/ja/language.types.float.php#warn.float-precision

その他の回答 (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)

関連するQ&A