python decimal 如何真正的四舍五入

    import decimal
    decimal.getcontext().rounding = "ROUND_HALF_UP"
    result = decimal.Decimal(5285.325).quantize(decimal.Decimal("0.00"))
    print(result) # 5285.32

按道理来说 应该是可以得到5285.33的,网上各种资源也是说这样。

但是由于 ROUND_HALF_UP 四舍五入模式会将恰好处于两个选项中间的值(在这种情况下,处于 5285.325285.33 之间的值)向最接近的偶数选项上取整。由于 5285.325 恰好处于 5285.325285.33 的中间,因此应该向下取整为 5285.32

然后没有然后了,也不知道怎么解决,最后想了想,只要避免精度问题就行了,于是思路就是把浮点型数据编程字符串数据再来操作,代码如下

    import decimal
    decimal.getcontext().rounding = "ROUND_HALF_UP"
    result = decimal.Decimal(str(5285.325)).quantize(decimal.Decimal("0.00"))
    print(result) # 5285.33

如此就能解决decimal小概率性的没有四舍五入的问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值