我需要将值四舍五入到 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 在数学上是等价的。
如果要以两位小数显示它们,请使用{:.2f}
格式:
>>> '{:.2f}'.format(0.4)
'0.40'
print("{0:.2f}".format(round(0.4232323, 2)))
0.4
如果将这些值表示为浮点数,则和之间没有区别0.40
。以不同的精度打印它们只是格式字符串的问题(根据其他两个答案)。
但是,如果您想使用小数,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'