Python:使用舍入数字的异常结果。这是一个可以修复的怪癖吗?

时间:2016-07-01 20:49:24

标签: python python-2.7 python-3.x rounding

我正在尝试使用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]

现在列表中的前两个数字是完美的,但列表中的最后两个数字,应该是2436,现在是25和{{ 1}}。

尝试让它们在同一时间完全正确,这是一个愚蠢的错误吗?

编辑到期被标记为重复

我在问这是否有解决办法。这不只是关于Python及其怪癖的问题。 我已经看到其他答案,他们说使用十进制,这对我不起作用,或格式化并输出为字符串,但我不想要一个字符串,我需要进一步使用这些数字,作为数字

0 个答案:

没有答案