ホームページ > バックエンド開発 > PHPの問題 > PHPでの浮動小数点数の使用法は何ですか

PHPでの浮動小数点数の使用法は何ですか

藏色散人
リリース: 2023-03-14 08:44:01
オリジナル
2145 人が閲覧しました

php 浮動小数点数は Float 浮動小数点型を指し、「$a = 1.234;$b = 1.2e3;$c = 7E-10;$d = 1_234」のような構文で定義できます。 567;「できます。

PHPでの浮動小数点数の使用法は何ですか

この記事の動作環境:Windows7システム、PHP7.4バージョン、DELL G3コンピュータ

使用方法とはPHP 浮動小数点数?

php Float 浮動小数点型

浮動小数点型 (浮動小数点数 float、倍精度数 double、または実数 real とも呼ばれます) ) は、次の構文のいずれかを使用して定義できます ; 10 進数の精度 (64 ビット IEEE 形式)。

#警告

浮動小数点数の精度

浮動小数点数の精度には限界があります。システムにもよりますが、PHP は通常 IEEE 754 double 形式を使用するため、丸めによる最大相対誤差は 1.11e-16 です。非基本的な数学演算ではより大きな誤差が生じる可能性があるため、複合演算を実行する場合は誤差の伝播を考慮する必要があります。

また、0.1 や 0.7 など、10 進数で正確に表現できる有理数は、仮数部の数に関係なく、内部で使用される 2 進数では正確に表現できないため、2 進数に変換できません。精度を少しも損なうことなくフォーマットします。これは、混乱を招く結果につながる可能性があります。たとえば、floor((0.1 0.7)*10) は、結果の内部表現が 7.9999999999999991118... のようなものであるため、通常、期待される 8 ではなく 7 を返します。

したがって、浮動小数点数の結果が最後の桁まで正確であるとは決して信じないでください。また、2 つの浮動小数点数が等しいかどうかを比較しないでください。本当に高い精度が必要な場合は、任意精度の数学関数または gmp 関数を使用する必要があります。

浮動小数点数に変換

文字列から

<?php
$a = 1.234; 
$b = 1.2e3; 
$c = 7E-10;
$d = 1_234.567; // 从 PHP 7.4.0 开始支持
?>
ログイン後にコピー
他の型から

他の型の値の場合は、この状況は、値を最初に int に変換してから float に変換する場合と似ています。詳細については、「整数への変換」セクションを参照してください。

LNUM          [0-9]+(_[0-9]+)*
DNUM          ([0-9]*(_[0-9]+)*[\.]{LNUM}) | ({LNUM}[\.][0-9]*(_[0-9]+)*)
EXPONENT_DNUM (({LNUM} | {DNUM}) [eE][+-]? {LNUM})
ログイン後にコピー

浮動小数点数の比較

上記の警告メッセージにあるように、内部式の理由により、2 つの浮動小数点数が等しいかどうかを比較する際に問題があります。ただし、浮動小数点値を比較する回りくどい方法があります。

浮動小数点数が等しいかどうかをテストするには、その値よりほんの少しだけ大きい最小誤差値を使用します。この値は、マシン イプシロンまたは最小単位整数とも呼ばれ、計算で受け入れられる最小の差の値です。

$a と $b は小数点以下 5 桁の精度に相当します。

If the string is numeric or leading numeric then it will resolve to the corresponding float value, otherwise it is converted to zero (0).
ログイン後にコピー

NaN

特定の数学演算では、定数 NAN で表される結果が生成されます。この結果は、未定義または浮動小数点演算で表現できない値を表します。この値と他の値 (true を除く) を緩やかまたは厳密に比較すると、結果は false になります。

NAN は異なる値を表すため、NAN はそれ自体を含む他の値と比較されるべきではなく、is_nan() を使用してチェックされる必要があります。

推奨学習: 「

PHP ビデオ チュートリアル

以上がPHPでの浮動小数点数の使用法は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート