解决round函数四舍五入出错的问题

round函数错误及原因

由于round函数使用过程中出现了四舍五入数据不正确的问题,例如:

print(round(1.255,2))
#结果是1.25
print(round(1.265,2))
#1.26
print(round(1.275,2))
#1.27

写了一些实例发现:
当你要保留的那位数字大于等于5时,并且之后的那位数是5时,此时后面的那个5会变成4999999…

举个例子:

print(decimal.Decimal(1.265))
#结果是1.2649999999999999023003738329862244427204132080078125
print(decimal.Decimal(1.275))
#结果是1.274999999999999911182158029987476766109466552734375

解决方案:

一般来说就在数据后面加上0.000000001这样足够小且不影响结果的数就好
但对于数据量大且不确定保留到哪一位的数来说就难保证不出问题了
所以我在这里把数据保留位数之后的那一位加1
问题解决了

#定义新函数
def wghround(num,w):
    k = 1/(10**(w+1))
    return round(num+k,w)
    
print(wghround(1.765,2))
#结果为1.77

点个赞再走吧

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值