回答編集履歴
1
追記
test
CHANGED
@@ -14,14 +14,30 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
ここからは、`float`あるあるですが、内部的に 2 進数でもっている数値を 10 進数で表すので、誤差が生じます。
|
17
|
+
~~~ここからは、`float`あるあるですが、内部的に 2 進数でもっている数値を 10 進数で表すので、誤差が生じます。
|
18
18
|
|
19
|
-
多分、その誤差が`-0`なんてへんな数字を作り出したのだと思われます。
|
19
|
+
多分、その誤差が`-0`なんてへんな数字を作り出したのだと思われます。~~~
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
ので、yambejp さんの回答のように、(int) へキャストしてやることで、`0`になるのだろうと。
|
23
|
+
~~~ので、yambejp さんの回答のように、(int) へキャストしてやることで、`0`になるのだろうと。~~~
|
24
24
|
|
25
25
|
|
26
26
|
|
27
27
|
これ、盲点でした^^;分岐条件で間違えちゃいそうですw
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
# **回答が見つかったので、追記します。**
|
32
|
+
|
33
|
+
[2009年1月23日(金) PHPで==の代わりにstrcmp関数を使うことによる問題点](http://d.hatena.ne.jp/hnw/20090123)
|
34
|
+
|
35
|
+
こちらのサイトで、少しだけ触れられていました。
|
36
|
+
|
37
|
+
> -0.0
|
38
|
+
|
39
|
+
浮動小数点数は、プラスから0.0に近付いた場合とマイナスから0.0に近付いた場合を区別するため、計算結果が0.0でも符号がつきます。PHP5.2.3からは、この-0.0をstring型にキャストすると"-0"になるようになりました。-0.0も数としては0.0と同じなので、==や===で比較すると同じ数になりますが、strcmpで比較すると異なる文字列として扱われてしまいます。
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
ただし、この変更を公式で見つけることは出来ませんでした^^;
|