如何舍入1位小数到2位小数的值

时间:2013-10-01 15:05:30

标签: python python-2.7

我需要将值精确到2位小数,但是当我使用round()时它不起作用,如果值为0.4,但我需要0.40。

round(0.4232323, 2) = 0.42
bad: round(0.4, 2) = 0.4

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:7)

0.4和0.40在数学上是等价的。

如果要显示两位小数,请使用{:.2f}格式:

>>> '{:.2f}'.format(0.4)
'0.40'

答案 1 :(得分:1)

print("{0:.2f}".format(round(0.4232323, 2)))

答案 2 :(得分:1)

如果您将这些值表示为浮点值,则0.40.40之间没有区别。要以不同的精度打印它们只是格式字符串的问题(根据其他两个答案)。

但是,如果你想使用小数,Python中就有decimal module

>>> 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'