PHP は弱く型付けされた言語です。これが利点であり特徴ですが、場合によってはそれに応じて型を変換する必要があります。
この時点で問題が発生します。多くの場合、型を変換した後に得られるデータが期待値と大きく異なることがわかるからです。
ここでは例としてプラスチックへの強制変換を使用します。
以下のコードを見ると、正解を伝えることは絶対に不可能であると言えます。
エコー (int) 123.999999999999999; エコー (int) -1.9999999999999999;
エコー (int) -0.99999999999; 9999;
エコー (int) -10.9999999999;
エコー (int) -1000.9999999999999;エコー (int) -9999999999
私が得た結果を見てみましょう。
まず最初に、私のシステム環境を説明する必要があります。 win7X86
得られた結果は以下の通りです
124-1
-2 -1
-10
-1001
-1410065407
公式声明は次のとおりです:
浮動小数点数から整数に変換する場合、ゼロに向かって丸められます。
浮動小数点数が整数の範囲 (通常 +/- 2.15e+9 = 2^31) の外にある場合、浮動小数点数には正確な整数を与えるのに十分な精度がないため、結果は不定になります結果。この場合、警告はなく、通知さえありません。
ここまで言いましたが、一言でまとめると、「精度が十分でなくても、私には関係ありません!」です。
それでは、以下の例を見てみましょう。
エコー (int) ( (0.1+0.7) * 10 );
推測する必要はありません。ここでの実行結果は ---7 です!はい、あなたは正しく読み、私は正しく入力しました。結果は、私たちが通常考えるような 8 ではなく、7 です。
これで、PHP がどれほどめちゃくちゃかわかりましたね!
PHP 公式には次の警告があります:
未知の分数を整数にキャストしないでください。予測できない結果が生じる可能性があります。
したがって、強制的な型変換を実行するときは注意してください。大きな数値、高精度、分数の使用には注意が必要です。 もちろん、上記の例はこの方法で処理できます。 x$num = (0.1 + 0.7) * 10;
echo (int) $num;
http://www.bkjia.com/PHPjc/327448.html