如何解决四舍五入浮动,并带有表示错误,直到最接近和正确的结果
即使将数字四舍五入,小数点仍然不会 完全 符合您的期望。Python可能只显示最高有效位,但是潜在的十进制不准确度仍然存在。
python文档专门为它提供了一部分
由于显示值的方式,许多用户不了解近似值。Python仅将十进制近似值打印到机器存储的二进制近似值的真实十进制值。在大多数机器上,如果Python要打印存储为0.1的二进制近似值的真实十进制值,则必须显示
>>> 0.1 0.1000000000000000055511151231257827021181583404541015625
这比大多数人认为有用的数字还要多,因此Python通过显示舍入的值来保持数字的可管理性。
>>> 1 / 10 0.1
对于大多数用例,可以安全地忽略不准确性。如果要处理的数字非常小或非常大,或者需要精确到许多小数位,则可以使用十进制 库
>>> Decimal('111.85') * Decimal('111.85')
Decimal('12510.4225')
解决方法
我遇到的情况是Python中的经典表示错误开始成为问题:我需要将它们用于Numpy中的Matrix运算,并且尚不支持 十进制 类型。
你们都知道,如果我111.85 *
111.85
会得到,12510.422499999999
但是如果round(12510.422499999999,4)
我能得到适当的结果,那当然是可以的12510.4225
。
但是实际的问题是:
- 这回合是个好主意和好的做法吗?
- 这适用于所有情况吗?有时小数点位置..999小数点可能会更多
- 最后,如何为所有可能的值获取适当的小数位数以与舍入配合使用?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。