我正在尝试使用Python进行舍入,但每次都无法获得正确的结果,这应该是
[3.24,-0.16,0.24,0.36]
首先,我使用了round(number, 2)
[3.24,-0.16000000000000003,0.24,0.36]
列表中的第二个数字不是四舍五入...
然后,我使用了decimal
from decimal import *
getcontext().prec = 2
[十进制('3.2'),十进制(' - 0.16'),十进制('0.24'),十进制('0.36')]
这会修复原始错误号码,但现在列表中的第一个号码未正确舍入,应为3.24
。
所以,我出于好奇心尝试了三个精度来看看会发生什么
from decimal import *
getcontext().prec = 3
[十进制('3.24'),十进制(' - 0.160'),十进制('0.240'), 十进制( '0.360')]
...现在列表中的第一项是以三位数的精度进行的,它应该以两位数的精度进行。
所以我根据另一个答案尝试使用math.ceil
math.ceil(number*100)/100 for number in list_of_numbers]
[3.24,-0.16,0.25,0.37]
现在列表中的前两个数字是完美的,但列表中的最后两个数字,应该是24
和36
,现在是25
和{{ 1}}。
尝试让它们在同一时间完全正确,这是一个愚蠢的错误吗?
编辑到期被标记为重复
我在问这是否有解决办法。这不只是关于Python及其怪癖的问题。 我已经看到其他答案,他们说使用十进制,这对我不起作用,或格式化并输出为字符串,但我不想要一个字符串,我需要进一步使用这些数字,作为数字的