printf 形式の出力の問題について
$a = 123.666;
printf("%.2f", $a);
$b = 10.85;
print("
"); 🎜>printf("%.1f",$b);
結果が
123.67
10.8
前者は四捨五入されているのに、後者は四捨五入されていないのはなぜですか?
------ソリューションのアイデア----------------------printf("%.1f %. 16f", 10.85, 10.85); //10.8 10.8499999999999996
浮動小数点数 10.85 は、実際には 10.84999999999999996 としてマシンに保存されます
したがって、小数点第 1 位に変換すると、10.8
実はこれについては心配する必要はありません。浮動小数点数の表現と精度については、コンピュータ基礎コースですでに学習しています。
高精度の演算が必要な場合は、php が提供する BC および gml 拡張機能を使用してください。