値を正確に 2 桁に丸める必要がありますが、round() を使用すると、値が 0.4 の場合は機能しませんが、0.40 が必要です。
round(0.4232323, 2) = 0.42
bad: round(0.4, 2) = 0.4
どうすればこれを解決できますか?
値を正確に 2 桁に丸める必要がありますが、round() を使用すると、値が 0.4 の場合は機能しませんが、0.40 が必要です。
round(0.4232323, 2) = 0.42
bad: round(0.4, 2) = 0.4
どうすればこれを解決できますか?
0.4 と 0.40 は数学的に同等です。
小数点以下 2 桁で表示する場合は、次の{:.2f}
形式を使用します。
>>> '{:.2f}'.format(0.4)
'0.40'
0.4
これらの値を float として表す場合、 と の間に違いはありません0.40
。それらを異なる精度で印刷するには、フォーマット文字列の問題にすぎません(他の2つの回答による)。
ただし、小数を操作したい場合は、Pythonにdecimal
モジュールがあります。
>>> from decimal import Decimal
>>> a = Decimal("0.40")
>>> b = Decimal("0.4")
# They have equal values
>>> a == b
True
# But maintain their precision
>>> a + 1
Decimal('1.40')
>>> b + 1
Decimal('1.4')
>>> a - b
Decimal('0.00')
メソッドを使用しquantize
て、特定の桁数に丸めます。例えば:
>>> c = Decimal(0.4232323)
>>> c.quantize(Decimal("0.00"))
Decimal('0.42')
>>> str(c.quantize(Decimal("0.00")))
'0.42'