浮動小数点数を追加すると、一貫性のない不一致が発生します。 浮動小数点数は正確ではないことに気付いていますが、1.95を1.95に追加して3.8999999の代わりに3.9 にするにはどうすればよいですか?丸めは機能しません。 number_formatは最後の 結果を修正できますが、追加中は反映されません。PHPで浮動小数点の追加を不正確にする方法を教えてください。
$amountPaid = 0;
var_export($amountPaid); echo "<br>\n";
$amountPaid = $amountPaid + 1.95;
var_export($amountPaid); echo "<br>\n";
$amountPaid = $amountPaid + 1.95;
var_export($amountPaid); echo "<br>\n";
$amountPaid = $amountPaid + 1.95;
var_export($amountPaid); echo "<br>\n";
$amountPaid = $amountPaid + 1.95;
var_export($amountPaid); echo "<br>\n";
$amountPaid = $amountPaid + 1.95;
var_export($amountPaid); echo "<br>\n";
$amountPaid = $amountPaid + 1.95;
var_export($amountPaid); echo "<br>\n";
echo '<h1>Rounding does not work</h1>';
var_export(round($amountPaid,1)); echo "<br>\n";
これが出力されます。
0
1.95
3.8999999999999999
5.8499999999999996
7.7999999999999998
9.75
11.699999999999999
Rounding does not work
11.699999999999999
私もnumber_format
を使用して、すべてのステップで丸め(それは文字列を返す)と$amountPaid +=
構文を使用してみました。
丸められた値の正しい結果を得るには、 'var_export'の代わりに' var_dump'を使うことを考えてください。 – Philipp
すべての段階で丸めません。あなたが値を表示する必要があるとき、最後に丸めます。そうでなければ、実際にはすべての段階でエラーを増やしています。 –