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

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

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-20 05:00:19163ブラウズ

How Can I Accurately Round Floating-Point Numbers to Two Decimal Places in Python?

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

浮動小数点数を扱う場合は、このデータ型の制限を考慮することが重要です。特に、浮動小数点数は特定の値を正確に表現できない場合があり、四捨五入しようとすると予期しない結果が生じる可能性があります。

問題: 浮動小数点数を小数点以下 2 桁に四捨五入しようとすると、次のような問題が発生する可能性があります。次の問題が発生します:

>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999

この問題は、浮動小数点数が値を 2 のべき乗で割った整数として格納するために発生します。この表現では、すべての値が正確に取得できるわけではありません。倍精度数値 (Python の浮動小数点型で使用される) の場合、精度は 53 ビット (16 桁) ですが、通常の浮動小数点数の精度は 24 ビット (8 桁) です。

解決策:

float を四捨五入するときに小数点以下 2 桁だけを表示するには、いくつかのオプションがあります。利用可能:

  • 整数を使用し、値をセントで保存します: ドルを保存する代わりに、値をセントで保存し、100 で割ってドルに変換します。
  • 10 進数のような固定小数点数ライブラリを使用します: 固定小数点数を使用すると、小数点の数をより正確に制御できます。

例:

>>> a = 13.946
>>> print("%.2f" % a)
13.95
>>> print("{:.2f}".format(a))
13.95

round(a, 2) を直接使用しても浮動小数点精度の問題が発生することに注意してください。 %.2f または {:.2f} を含む文字列としての値は、必要な小数点以下 2 桁の表現を生成します。

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

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