文字列の等価性の理由

WBOY
WBOYオリジナル
2016-06-23 14:28:40978ブラウズ

教えてください、なぜ PHP は 2 つの文字列が等しいと考えるのでしょうか?
if("03E-004611"=="36E-008026") echo 'equal';


ディスカッションへの返信 (解決策)

この投稿は、2014 年 2 月 8 日 17:10 に xuzuning によって最終編集されました: 29

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 は等しくありませんではありません

したがって、そのような数値は数値ではなく文字列によって比較する必要があります

とても興奮していますああああ

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。