ホームページ >バックエンド開発 >PHPチュートリアル >浮動小数点数の比較に関しては、マニュアルでは明確に理解されていません。

浮動小数点数の比較に関しては、マニュアルでは明確に理解されていません。

WBOY
WBOYオリジナル
2016-06-23 13:32:181044ブラウズ

$a = 1.11;
$b = 1.11;

if($a==$b){
//結果は true;

2 つの浮動小数点数を比較してはいけないと言いませんか?それらが等しいかどうかを確認してください
計算後の浮動小数点数は比較できないことはありますか?しかし、精度上の理由により、同じように見える 2 つの数値は、比較すると等しくありません
もちろん、同じ精度で 2 つの数値を比較する場合には問題はありません


等しくないわけではありません比較すると、それは不正確です。

例:

$a = 1.1000000000000000001;$b = 1.1000000000000000011;if($a==$b){    echo 'equal';}else{    echo 'not equal';}


等しい出力

$a = 1.00000000000000001;$b = 1.00000000000000002;var_dump($a == $b); //bool(true) 居然是相等的$s = pack('f', $a);for($i=0; $i<strlen($s); $i++) printf(' %08b', ord($s{$i}));echo PHP_EOL;$s = pack('f', $b);for($i=0; $i<strlen($s); $i++) printf(' %08b', ord($s{$i}));echo PHP_EOL;

コンピュータに保存すると同じであることが判明
00000000 00000000 10000000 00111111
00000000 0000000 10000000 00111111

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