teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

誤字の修正

2018/05/15 13:32

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -6,9 +6,9 @@
6
6
 
7
7
  なんだ、PHPは算数も出来ないのか!とお思いでしょうが、違います。正確には、**PHPはある数より大きい整数については算数が出来ない**、です。このとある数は`PHP_INT_MAX`という定数で取得でき、OSやアーキテクチャによって固定で、通常は`2147483647`(32bit環境)か`9223372036854775807`(64bit環境)のどちらかです。
8
8
 
9
- 気付きましたか?`3486784400`は`2147483647`より大きい整数です。そのため、`PHP_INT_MAX`が`2147483647`である環境では`3486784400`を整数として扱えません。そのため、整数の簡単な算数ですら、PHPは正確に出来ないのです。
9
+ 気付きましたか?`3486784400`は`2147483647`より大きい整数です。そのため、`PHP_INT_MAX`が`2147483647`である環境では`3486784400`を整数として扱えません。そのため、整数の簡単な算数ですら、PHPは正確に出来ないのです。
10
10
 
11
- では、実際どのような処理の結果`-3`という答えを出してしまったのかを見ていきましょう。下記処理は`PHP_INT_MAX`が`2147483647`の場合です。`9223372036854775807`では正しく`1`と答えてくれるので、該当しないことに注意してください。
11
+ では、実際どのような処理の結果`-3`というとんちんかんな答えを出してしまったのかを見ていきましょう。下記処理は`PHP_INT_MAX`が`2147483647`の場合です。`9223372036854775807`では正しく`1`と答えてくれるので、該当しないことに注意してください。
12
12
 
13
13
  まず、`3486784400`というリテラル表記ですが、**整数(int)ではありません**。`PHP_INT_MAX`を越えているため、PHPではこの表記の数を整数として扱えないからです。実際には何になるのかというと、`var_dump()`で確認できます。
14
14