四舍五入以5作为最后一位数字

时间:2019-03-25 10:27:13

标签: python

我想舍入一个最后有5个数字。如果十进制值> = 5,Python round函数会将十进制数四舍五入为ceil整数。

我希望round(30.195,2)输出30.19,但是python提供了30.2

2 个答案:

答案 0 :(得分:0)

您可以使用此:

int(30.195*100)/100

30.195舍入到30.2,因为0.005被四舍五入,导致30.19 + 0.01 = 30.20适合四舍五入。

请注意,我上面的方法截取了最后一位数字,没有四舍五入-这是获得所需结果所需要的。因此,下面两个都给出了30.19的相同答案:

int(30.199*100)/100
int(30.191*100)/100

这是函数形式的解决方案:

def chop_off(val, places):
    return int(val*10**places)/10**places

print(chop_off(30.195,2))

如果要舍入到0.005,可以使用以下方法:

import math

def round_off(val, places):
    last_digit = val*10**(places+1)%10
    if last_digit > 5:
        return math.ceil(val*10**places)/10**places
    else:
        return math.floor(val*10**places)/10**places
    return int(val*10**places)/10**places

print(chop_off(30.194,2))  # 30.19
print(chop_off(30.195,2))  # 30.19
print(chop_off(30.196,2))  # 30.20

答案 1 :(得分:0)

您可以从所有数字中减去0.001并保存在单独的列表中。这样,舍入功能将按您希望的那样工作。 30.195将变为30.194并四舍五入为30.19 30.196将变为30.195,四舍五入为30.20

如果没有,您可以运行for循环并检查小数点后第三位是否为5,然后手动将其舍入,否则使用内置的舍入函数