round()似乎无法正确舍入

round()函数的文档指出,您向其传递了一个数字,并将小数点后的位置传递给四舍五入。因此,它应该这样做:


n = 5.59

round(n, 1) # 5.6

但是,实际上,老的浮点怪异现象不断蔓延,您会得到:


5.5999999999999996

出于UI的目的,我需要显示5.6。我在Internet上闲逛,发现一些文档取决于我对Python的实现。不幸的是,这在我的Windows开发机和我尝试过的每台Linux服务器上都会发生。另请参阅此处。


除了创建自己的回合库之外,还有什么办法可以解决?


qq_笑_17
浏览 318回答 3
3回答

慕村225694

我不知道它的存储方式,但至少格式化正确:'%.1f' % round(n, 1) # Gives you '5.6'

GCT1015

格式化无需四舍五入即可正确进行:"%.1f" % n

倚天杖

如果使用小数模块,则可以不使用“舍入”功能进行近似计算。这是我用于舍入的内容,尤其是在编写货币应用程序时:Decimal(str(16.2)).quantize(Decimal('.01'), rounding=ROUND_UP)这将返回一个十进制数为16.20。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python