浮動小数点数を小数点以下 2 桁に制限する
round() などの標準メソッドを使用して浮動小数点数を小数点以下 2 桁に丸めようとすると、予期しない結果が生じる可能性があります。これは、特定の数値を正確に表現できないという浮動小数点表現の固有の制限によるものです。
バイナリ コンピューターでは、浮動小数点数は 2 の累乗で除算された整数として格納されます。たとえば、13.95 は 125650429603636838/(2**53) と近似的に表されます。浮動小数点型の精度は限られているため (浮動小数点の場合は 24 ビット、倍精度の場合は 53 ビット)、これらの値は常に正確に表現できるとは限りません。
その結果、round() を使用して浮動小数点数を丸めると、わずかにずれた結果が生成されます。表示目的で必要な小数点以下 2 桁の精度を実現するには、別のアプローチを採用できます。
たとえば、次の演算は正しく丸められます。小数点以下 2 桁までの表示:
print("%.2f" % a) # -> 13.95 print("{:.2f}".format(a)) # -> 13.95
"{:.15f}".format(round(a, 2)) を使用すると、浮動小数点数の精度制限により 13.949999999999999 が返されます。ただし、表示目的では、このレベルの精度は必要ありません。
以上が浮動小数点数を小数点以下 2 桁に確実に四捨五入して表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。