PHP の科学表記法の難問
PHP では、10 進数を処理するときに予期しない動作が発生する場合があります。以下のコード スニペットに示されているように、小数点を含む数値を指定しても、その数値が目的の形式で出力されるとは限りません。
<?PHP $var = .000021; echo $var; ?>
驚くべきことに、このコードの出力は「2.1E-」です。予想される「.000021」ではなく「5」です。この科学的表記法は、正確な数値を扱う場合には望ましくないことがよくあります。
科学的表記法の背後にある理由
PHP は内部的に浮動小数点演算を使用して数値を表します。数値の末尾にゼロが多数ある場合、精度を維持し、不正確な丸めを避けるために、PHP はデフォルトで科学的表記法を使用します。この場合、「.000021」の末尾に 0 が 5 つあるため、科学的表記法が使用されます。
科学的表記法を克服する
科学的表記法を防ぐには、次のようにします。 number_format() 関数:
print number_format($var, 5);
ここで、「5」引数は、次の数を指定します。小数点以下の桁数を保持します。この関数は期待どおりに「.000021」を出力します。
さらに、sprintf() を使用して出力形式を制御することも検討できます。
printf("%.5f", $var);
このアプローチでは、数値が確実に出力されます。小数点以下 5 桁
以上がPHP が科学表記法で小さな小数を表示するのはなぜですか?また、それを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。