访问密钥

时间:2016-12-29 11:59:54

标签: python decimal

我有一个元组列表,现在我需要获取密钥rate

'rate': 3.3000000000000003

但是当我print rates[0]['rate']时,我得到3.3,而不是3.3000000000000003。知道为什么,以及如何解决?

3 个答案:

答案 0 :(得分:1)

你没有失去精确度。 Python只是通过提高精度来改变它的表示。如果要按原样显示值,可以使用repr()作为:

print repr(rates[0]['rate'])

会将您的号码打印为字符串:

'3.3000000000000003'

答案 1 :(得分:0)

不要将舍入与格式化输出值混淆。如果您的目标只是输出具有一定小数位数的数值,则通常不需要使用舍入( )。相反,只需在格式化时指定所需的精度。例如:

>>> x = 1.23456
>>> format(x, '0.2f')
'1.23'
>>> format(x, '0.3f')
'1.235'
>>> 'value is {:0.3f}'.format(x)
'value is 1.235'
>>>

此外,抵制圆形浮点数以“修复”感知精确度问题的冲动。例如,您可能倾向于这样做:

>>> a = 2.1
>>> b = 4.2
>>> c = a + b
>>> c
6.300000000000001
>>> c = round(c, 2)      # "Fix" result (???)
>>> c
6.3
>>>

<强> Source

答案 2 :(得分:0)

当然,您可以使用字符串格式化工具,如@parik和@Molnuddin。您还可以将十进制算术模块decimal用于Python 2Python 3的操作。