微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

四舍五入浮动,并带有表示错误,直到最接近和正确的结果

如何解决四舍五入浮动,并带有表示错误,直到最接近和正确的结果

即使将数字四舍五入,小数点仍然不会 完全 符合您的期望。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 举报,一经查实,本站将立刻删除。