ホームページ >バックエンド開発 >Python チュートリアル >浮動小数点数を小数点以下 2 桁に確実に四捨五入して表示するにはどうすればよいですか?

浮動小数点数を小数点以下 2 桁に確実に四捨五入して表示するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-05 09:00:43837ブラウズ

How Can I Reliably Round Floats to Two Decimal Places for Display?

浮動小数点数を小数点以下 2 桁に制限する

round() などの標準メソッドを使用して浮動小数点数を小数点以下 2 桁に丸めようとすると、予期しない結果が生じる可能性があります。これは、特定の数値を正確に表現できないという浮動小数点表現の固有の制限によるものです。

バイナリ コンピューターでは、浮動小数点数は 2 の累乗で除算された整数として格納されます。たとえば、13.95 は 125650429603636838/(2**53) と近似的に表されます。浮動小数点型の精度は限られているため (浮動小数点の場合は 24 ビット、倍精度の場合は 53 ビット)、これらの値は常に正確に表現できるとは限りません。

その結果、round() を使用して浮動小数点数を丸めると、わずかにずれた結果が生成されます。表示目的で必要な小数点以下 2 桁の精度を実現するには、別のアプローチを採用できます。

  • 整数を使用して通貨値をセント単位で保存し、100 で割ってドルを表示します。
  • 正確な表現を保証するには、10 進数などの固定小数点数ライブラリを使用してください。

たとえば、次の演算は正しく丸められます。小数点以下 2 桁までの表示:

print("%.2f" % a)  # -> 13.95
print("{:.2f}".format(a))  # -> 13.95

"{:.15f}".format(round(a, 2)) を使用すると、浮動小数点数の精度制限により 13.949999999999999 が返されます。ただし、表示目的では、このレベルの精度は必要ありません。

以上が浮動小数点数を小数点以下 2 桁に確実に四捨五入して表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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