python - 如何更改python中的数值精度?
问题描述
如果我在 python 中写 1e-15,python 可以将该数字与 0 区分开来,但如果我写 1e-16,python 无法将该数字与 0 区分开来。所以 python 精确到第 16 位。有没有办法将此精度降低到例如 10 位?如何?我可以用一些计算吗
谢谢你的帮助。
解决方案
如果您想在计算中进行精确的算术运算,强烈建议不要使用默认float
类型。请参阅官方文档的浮点运算:问题和限制部分。
这就是为什么使用十进制模块会更好。它有几种控制精度的方法。
在这里,我们全局更改精度:
>>> from decimal import *
>>> getcontext().prec = 6
>>> Decimal(1) / Decimal(7)
Decimal('0.142857')
>>> getcontext().prec = 28
>>> Decimal(1) / Decimal(7)
Decimal('0.1428571428571428571428571429')
在这里,我们为单个数字执行此操作:
>> Decimal('0.1428571428571428571428571429').quantize('0.01')
Decimal('0.14')
您可以在文档中找到更多示例。
推荐阅读
- gojs - 如何在 GOJS-Floorplanner 中移动单个墙时将连接的墙一起移动
- mongodb - Mongodb - 根据其他字段值添加额外字段
- android - 如何将 AudioRecord 类中识别的语音保存在文件中?
- amazon-web-services - 在 Groovy 中为 soapUI 生成 AWS 签名
- java - 为什么 Scanner Class 不像 println 方法那样使用重载的概念
- java - Xpath 为一个没有任何唯一 ID 的元素写入
- nuxt.js - Nuxt.js 和 koajs 如何在 asyncData 方法中使用 ctx.status 或 ctx.body
- java - 自动装配其他 bean 时未注册自定义 HealthIndicator
- ruby-on-rails - 嵌套属性未保存(设计注册控制器/Rails 5)
- python - 如何使用 webdriver.find_element_by_css_selector('myclass or id') 更新属性值“位置:'';”