为了账号安全,请及时绑定邮箱和手机立即绑定

round()似乎无法正确舍入

round()似乎无法正确舍入

qq_笑_17 2019-10-17 14:12:58
round()函数的文档指出,您向其传递了一个数字,并将小数点后的位置传递给四舍五入。因此,它应该这样做:n = 5.59round(n, 1) # 5.6但是,实际上,老的浮点怪异现象不断蔓延,您会得到:5.5999999999999996出于UI的目的,我需要显示5.6。我在Internet上闲逛,发现一些文档取决于我对Python的实现。不幸的是,这在我的Windows开发机和我尝试过的每台Linux服务器上都会发生。另请参阅此处。除了创建自己的回合库之外,还有什么办法可以解决?
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

我不知道它的存储方式,但至少格式化正确:


'%.1f' % round(n, 1) # Gives you '5.6'


查看完整回答
反对 回复 2019-10-17
?
GCT1015

TA贡献1827条经验 获得超4个赞

格式化无需四舍五入即可正确进行:


"%.1f" % n


查看完整回答
反对 回复 2019-10-17
?
倚天杖

TA贡献1828条经验 获得超3个赞

如果使用小数模块,则可以不使用“舍入”功能进行近似计算。这是我用于舍入的内容,尤其是在编写货币应用程序时:


Decimal(str(16.2)).quantize(Decimal('.01'), rounding=ROUND_UP)

这将返回一个十进制数为16.20。


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 314 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信