python - 当 5 出现在第 (n+1) 次时,是否有关于带小数点的数字如何按 %.nf 舍入的规则?
问题描述
我正在玩python打印功能并遇到了这个问题。
print('%.2f' % (0.665)) # 0.67
print('%.3f' % (0.0625))# 0.062
由于0.665保留两位小数,结果为0.67,我希望保留三位小数0.0625的输出为0.063,但结果为0.062。
解决方案
一般规则是,当一个数字的四舍五入部分正好是 5 时,您选择使最终结果数字相等的方向 - 这样可以避免在这些中间情况下出现任何系统偏差。这适用于 的情况,这是在浮点二进制0.0625
中具有精确0.375
表示的不常见十进制数之一 - 它的最后一位确实是 5。(对于在这种情况下四舍五入的数字示例,请尝试两个地方。)0.665
另一方面,数字实际上并不存在 - 最接近的浮点值实际上是 0.6650000000000000355271。四舍五入的部分肯定(虽然只是稍微)大于 5,所以它必然四舍五入。
推荐阅读
- c++ - 我想实现一个 BST 并尝试使用向量作为输入
- dataweave - 如何在 Mule 4 的对象数组中选择最后一个重复对象
- python - 我应该使用 Excel 来管理类和属性吗?
- php - 无法访问“主页”OJS 3211 + OldGregg
- html - 使用 html5 音频元素设置错误的 currentTime
- javascript - 如何使用 Hooks 在反应中延迟触发函数
- git - 基于 Git 时间戳的自动同步
- python - 六边形上的 Kivy Stencil 以 Screen 作为父级,如果父级是窗口,但以 ScreenManager 作为父级,它会出现错误?
- c# - 如何修复错误,名称''在c#的当前上下文中不存在
- html - 在 React 组件中声明变量的位置