PHP の浮動小数点数の計算精度: なぜ難しいのか、そしてそれを克服する方法
PHP で浮動小数点数を扱う場合、それは非常に重要です固有の精度限界を認識する必要があります。スニペットで示すように:
<br>$fooValue = 100.68;<br>$cowValue = 100.67;</p> <p>$diffValue = $fooValue - $cowValue;<br> if ($diffValue </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">echo("success");
} else {
echo("error");
}
驚かれるかも知れません値の差が 0.01 未満であるにもかかわらず、「エラー」が出力されることがわかります。この動作は、PHP の浮動小数点数、実際すべてのコンピュータ システムがバイナリ表現に基づいているため、変換中に精度が低下する可能性があるという事実に起因しています。
この課題に対処するには、浮動小数点数に依存しないようにすることをお勧めします。絶対精度が必要な場合の浮動小数点演算。考慮できる主なアプローチは 2 つあります。
1. BC Math または GMP ライブラリを利用する:
2.影響と考えられる回避策を理解します。
以上がPHP の浮動小数点演算で予期しない結果が生じるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。