ホームページ >バックエンド開発 >PHPチュートリアル >文字列の等価性の理由
教えてください、なぜ PHP は 2 つの文字列が等しいと考えるのでしょうか?
if("03E-004611"=="36E-008026") echo 'equal';
var_dump("03E-004611"=="36E-008026"); //bool(true)var_dump(03E-004611, 36E-008026); //float(0) float(0)var_dump("03E-004611"==="36E-008026"); //bool(false)
PHP が 2 つの文字列が等しいと考えるのはなぜですか? 教えてください。
if("03E-004611"=="36E-008026") echo 'equal';
上記の説明は二重引用符を使用しており、ここで実行できます。はPHPの機能ですのでシングルクォーテーションに置き換えると違います
Eは10のカーテン演算なので、「03E-004611」は既に記号番号に換算すると限りなく0に近くなります*。 pow(10,-4611) は、それほど高い精度を達成できないため、すべて 0 です。
たくさんのことを学びました
教えてください、なぜ PHP は 2 つの文字列が等しいと考えるのでしょうか?
if("03E-004611"=="36E-008026") echo 'equal';
二重引用符を使用しており、内部で実行できるため、上記の説明は完璧ではありません。シングルクォーテーションに変更すると結果は変わります
科学的記数法を理解するだけの問題です
90A-904611 と 36E-008026 を試してみましたが、これら 2 つの文字列は等しくありません
このうち、36E-008026 は科学的記数法とみなすことができ、90A -904611 は等しくありませんではありません
したがって、そのような数値は数値ではなく文字列によって比較する必要があります