ホームページ >バックエンド開発 >PHPチュートリアル >PHP浮動小数点精度値サンプルプログラムの詳細説明_PHPチュートリアル
この記事では、PHP 浮動小数点精度値サンプル プログラムの詳細な説明を紹介します。浮動小数点精度値を理解する必要がある友人が参考になれば幸いです。
PHP の浮動小数点数の精度値は、浮動小数点数の出力を制御するために使用されます。精度値が異なると、出力結果が異なる場合があります。内部値は実際の値に基づいて保存されます。2 つの浮動小数点数が四則演算に使用される場合、その元の値が引き続き使用されます。
精度は、グローバルに指定される浮動小数点数の精度値を設定するために使用されます。デフォルト設定は、Windows では 12 ですが、Linux では 14 であるようです。もちろん、プログラム内で ini_set を使用してグローバル設定を変更することもできます。例:
コードは次のとおりです | コードをコピー |
ini_set("精度", "15"); |
私は常に精度を保持される小数点の数として理解していましたが、これは PHP 浮動小数点数の場合ですか?答えは否定的です。
浮動小数点数は実際には整数部と小数部で構成されており、整数部の桁数と小数部の桁数を加算した値が最大精度値を超えることはできません。丸め方法に従って最大精度値に切り捨てられます。整数部が0の場合は桁数はカウントされず、小数部末尾の0もカウントされません。さらに、同じ数値であっても、精度が異なると表示される表現形式も異なる場合があります。以下に例を挙げて説明する。
整数部分が0の場合
コードは次のとおりです | コードをコピー |
$num = 0.12345600000000000; ini_set("精度", "12"); ini_set("精度", "3"); ini_set("精度", "5"); |
//精度の値を超え、5 桁を保持します。この場合、精度の値は小数点以下の桁数に相当します。
整数部分が0より大きい場合
コードは次のとおりです | コードをコピー |
$num = 12.12345600000000000; ini_set("精度", "12"); ini_set("精度", "3"); ini_set("精度", "5"); |
。
整数部分が0より大きい場合のケース2
コードは次のとおりです | コードをコピー |
$num = 12345678.12345600000000000; ini_set("精度", "12"); ini_set("精度", "3"); ini_set("精度", "5"); |
//精度の値を超えており、整数部分の桁数が精度を超えているため、小数部分は破棄され、整数部分として 5 桁のみが取得されます。上記の例からわかるように、精度の値は次のとおりです。整数部分のインターセプトにも関係します。最後の 2 つの例は異なる方法で表示されていることに注意してください。1 つは科学的表記法を使用し、もう 1 つはその後に 0 補数が続きます。実験により導き出された結論は、整数部の桁数から精度の値を引いた値が 4 より大きい場合は科学表記法が使用され、それ以外の場合は 0 が補われます。精度の値を超えると切り捨てられます。最終的に、埋め込まれたゼロの数は 4 を超えません。
浮動小数点演算
コードは次のとおりです | コードをコピー |
$num1 = 1331625729.687; $num1 をエコーします。
'; $sub をエコー '
'; |
PHP の組み込みの echo、var_dump、json_encode、文字列連結、およびその他の関数 (命令) では、浮動小数点数を表示するときに問題が発生し、精度が失われます。
コードをコピー | |
$a = 1315537636.338467; printf("%f", $a); echo "n"; echo $a . "n"; echo $a; ?> 結果 1315537636.338467 1315537636.3385 1315537636.3385
|
http://www.bkjia.com/PHPjc/632694.html