我想舍入一个最后有5个数字。如果十进制值> = 5,Python round
函数会将十进制数四舍五入为ceil整数。
我希望round(30.195,2)
输出30.19
,但是python提供了30.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,然后手动将其舍入,否则使用内置的舍入函数