round() 似乎没有正确舍入

新手上路,请多包涵

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

 n = 5.59
round(n, 1) # 5.6

但是,实际上,古老的浮点怪癖悄悄出现,你会得到:

 5.5999999999999996

出于 UI 的目的,我需要显示 5.6 。我在 Internet 上四处寻找,发现一些 文档 表明这取决于我对 Python 的实现。不幸的是,这发生在我的 Windows 开发机器和我尝试过的每台 Linux 服务器上。 另见此处

除了创建我自己的圆形库之外,还有什么办法可以解决这个问题吗?

原文由 swilliams 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 383
2 个回答

我无法帮助它的存储方式,但至少格式正确:

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

原文由 Jimmy 发布,翻译遵循 CC BY-SA 4.0 许可协议

即使无需四舍五入,格式也能正常工作:

 "%.1f" % n

原文由 Vinko Vrsalovic 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题