为什么python有时会扩展数字,有没有办法阻止它?例如1.7可能变成1.70000005。 具体来说,我在接受浮动列表并尝试填充新列表时遇到此问题。
newList = []
for value in myList:
print value
newList.append(value)
return newList
控制台将打印出包含不超过2个小数位的数字,而返回的newList将有17个位置,并且通常在最后一位数字中包含非零值。即使我试图在循环内舍入(值,2),它也会这样做。
答案 0 :(得分:1)
这只是代表!实际上,列表的内容仍然相同。
要正确显示,您可以将其格式化为字符串:
print("{.17f}".format(my_float_value))
或者,您可以使用decimals
模块:
>>> import decimal
>>> my_float = decimal.Decimal("0.2342134235")
>>> my_float
Decimal('0.2342134235')
希望这有帮助!
答案 1 :(得分:1)
CPython使用C双打,而C双打通常在硬件中实现以提高速度。
硬件浮点精确到只有有限数量的数字。此外,它存储了基数2,我们主要考虑基数10,并且一些在基数10中具有有限表达式的数字在基数2中没有,反之亦然。
所以你应该:
您可以使用decimal模块获取调用者指定的精度。或者,如果您有合理的值,则可以使用分数模块。