我有一个元组列表,现在我需要获取密钥rate
'rate': 3.3000000000000003
但是当我print rates[0]['rate']
时,我得到3.3
,而不是3.3000000000000003
。知道为什么,以及如何解决?
答案 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)