我刚刚发现:
round(3.5) = 4
尽管:
round(2.5) = 2
也就是说,当一个数字以 0.5 结尾时,它有时会向上取整(应该如此),有时会向下取整。
我想制作一个进行一些计算的程序,但它可以很好地四舍五入,将55.5 舍入为55是不值得的。
我怎样才能做到这一点,给定任何数字,以.5结尾的数字都是四舍五入的?
它对我不起作用,ceil
因为如果数字是2.4 它会四舍五入到 3,这也不正确。
我不想知道为什么会发生这种情况,我想知道如何使这样的代码运行良好:
X=a*b,其中a 和b 是 2 个十进制数字
print(round(X))
,以便用户可以看到四舍五入的数字,所以看起来很简单,但如果它给出14.5 ,它会将我四舍五入为 14。这在科学中并没有正确四舍五入。
为什么会发生这种情况在Why does Python 3 round()round 3.5 to 4 but 2.5 to 2? . 基本上,Python 3 使用银行家四舍五入,即银行家四舍五入,包括四舍五入
.5
到最接近的偶数。如果您想准确控制应用的舍入,请使用
decimal
带有选项的模块ROUND_HALF_EVEN
,ROUND_HALF_UP
或者ROUND_HALF_DOWN
(还有更多):我给你两个解决方案:
1.使用十进制包
2.使用数学包
您可以检查数字的整数部分,并据此决定四舍五入或保持原样。
在数字以0.5结尾的情况下,它
round
决定向数字四舍五入到最接近的偶数,如果整数部分是奇数,它会四舍五入到最接近的较小偶数。因此,如果数字是奇数,则向上取整,否则保持原样。或者您可以选择另一种解决方案,即检查小数部分,如果等于 5,则四舍五入。
在代码中它将是
事实是它看起来很奇怪......你可以尝试用 a 来控制它,
if(charAt(num) == '.5')
并让它强制四舍五入,如下所示: