python 中四舍五入的巨坑

博客揭示了Python中四舍五入操作的意外行为,导致0, 2, 2的结果,而非预期的1, 2, 3。尝试使用格式化字符串和decimal模块也无法避免问题。最终通过特定代码实现正确的小学数学四舍五入,强调类似小细节可能导致严重系统错误,提醒开发者重视这类问题。" 105265652,8464651,PHPMailer发送QQ邮件:安装与配置教程,"['PHP', 'PHPMailer', '发送邮箱', 'SMTP服务', '授权码']
摘要由CSDN通过智能技术生成

先来个灵魂三问: 

print(round(0.5))
print(round(1.5))
print(round(2.5))

一般人肯定以为输出1, 2, 3了,实际跑出来,却是0, 2, 2

有些同学马上说,可以利用格式化字符串呀:

print("%.0f" % 0.5)
print("%.0f" % 1.5)
print("%.0f" % 2.5)

然并卵,仍然是0, 2, 2 (至于为什么是这个结果,可以谷哥下,大概来说就是为了公平)

 

这就很令人抓狂了,要知道,你四舍五入是一个数字,我们码农四舍五入差的可是一个亿啊!于是,高端码农站出来了,说:这种情况就得使用decimal!

于是利用decimal来试试:

import decimal

print(decimal.Decimal("0.5").quantize(decimal.Decimal("0")))
print(decimal.Decimal("1.5").quantize(decimal.Decimal("0")))
print(decimal.Decimal("2.5").quantize(decimal.Decimal("0")))

心想如此高端大气的代码,那肯定是返回小学老师教的结果了,结果

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值