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

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

DDD
DDDオリジナル
2024-12-19 03:17:23449ブラウズ

How Can I Precisely Limit Floating-Point Numbers to Two Decimal Places in Python?

浮動小数点を小数点以下 2 桁に制限する: 浮動小数点の不精度と代替解決策

期待される浮動小数点値と表示される浮動小数点値の間に不一致が発生すると、問題が発生します。開発者が直面する共通の問題。 Python では、提供されたコードは「a」の値を 13.95 に丸めることを目的としていますが、浮動小数点表現の制限により、わずかに異なる結果が生成されます。

浮動小数点数は、実数を表すために使用されます。バイナリコンピュータシステム。ただし、すべての数値を完全な精度で表現できるわけではないため、丸め誤差が発生します。 「a」の場合、コンピュータは 13.95 を正確に表現できない 2 進小数として格納するため、丸められた値は元の値と同じになります。

Python の倍精度浮動小数点型は、53 ビットの通常の浮動小数点数は 24 ビットですが、精度は高くなります。これは、浮動小数点数の精度が、倍精度の場合は 10 進数 16 桁、通常の浮動小数点の場合は 10 進数 8 桁に制限されることを意味します。

この問題に対処するには、いくつかのアプローチが検討できます。

表示形式

「a」を小数点以下 2 桁のみで表示するには、次のような文字列書式設定手法を使用します。

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

10 進数タイプ

正確な精度が必要な場合は、10 進数モジュールの 10 進数タイプの使用を検討してください:

import decimal
decimal.Decimal('13.95')  # Output: Decimal('13.95')

整数表現

通貨値の場合小数点以下 2 桁までの精度のみが必要な場合、値をセント単位で保存するには整数を使用し、ドルに変換するには 100 で割ります:

value_in_cents = 1395  # Store value as an integer
value_in_dollars = value_in_cents / 100  # Output: 13.95

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

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