ホームページ  >  記事  >  バックエンド開発  >  PHP学習記録(浮動小数点型)_PHPチュートリアル

PHP学習記録(浮動小数点型)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 14:52:23954ブラウズ

$a = 1.234; $b = 1.2e3; $c = 7E-10;
?>

正規表現は次のとおりです:

浮動小数点数: [0-9]+

倍精度型: ([0-9][.]{LNUM}) ({LNUM}[.][0-9]*)

指数式: [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})

=========================

最大浮動小数点数のPHPコードは次のとおりです:

関数 float_max($mul = 2, $affine = 1) {
$max = 1; $omax = 0;
While((string)$max != 'INF') { $omax = $max *= $mul;
for($i = 0; $i $pmax = 1; $max = $omax;

while((string)$max != 'INF') {

$omax = $max;
$max += $pmax;
$pmax *= $mul;
}
}
$omax を返します;
}
echo "最大浮動小数点数:" ;var_dump(float_max());
?>
=========================
結果は次のとおりです (プラットフォームに応じて異なります):
最大浮動小数点数: float(1.79769313486E+308)

浮動小数点精度に関する注意:

0.1 や 0.7 のような単純な小数は、内部バイナリ形式に変換すると精度が失われます。

たとえば、floor((0.1+0.7)*10) は、結果の内部表現が実際には 7.9 であるため、通常、期待される 8 ではなく 7 を返します。

有限の桁数で特定の小数を正確に表現することはまったく不可能です。

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

PHP 5 以降、オブジェクトを float に変換しようとすると、E_NOTICE エラーが発行されます。

http://www.bkjia.com/PHPjc/371639.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/371639.html技術記事 ?php $a = 1.234; $b = 1.2e3; $c = 7E-10; 正規表現は次のとおりです。 浮動小数点数: [0-9]+ 倍精度型: ([0-9][. ]{LNUM }) ({LNUM}[.][0-9]*) 指数式: [+-]?(({LNUM} | {DNU...)
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。