Is Python#39;s Decimal class variable width?(Python的Decimal类是可变宽度的吗?)
问题描述
在Python中,您可以拥有任意大的整数(尽管它可能会占用您所有的内存来存储它们)。另一方面,对于浮点数,它们最终会溢出,如果您试图用太多的小数点来计算浮点数,则会失去精度。
哪个是decimal.Decimal
类?
我可以在小数点前有任意数量的数字吗?小数点后呢?限制是什么?
推荐答案
Decimal
具有用户指定的精度;您可以修改当前上下文以指定必须保留的小数位数。PERthe docs:
与基于硬件的二进制浮点数不同,十进制模块具有用户可更改的精度(默认为28位),可以根据给定问题的需要进行调整。
然后是一个示例:
>>> from decimal import *
>>> getcontext().prec = 6
>>> Decimal(1) / Decimal(7)
Decimal('0.142857')
>>> getcontext().prec = 28
>>> Decimal(1) / Decimal(7)
Decimal('0.1428571428571428571428571429')
如果您真的需要,可以将精度调到1,000,000或更高,但计算速度会很慢。在实践中,大多数问题都有一个不需要更多精度的点;NASA stops at 16 digits of pi (15 after the decimal) and at the scale of the entire solar system that has an error margin of only an inch or two for any calculations they care about;它们需要小数点左边更多的位来表示数值,但对于大多数目的,默认精度28就足够了,将其调高到40或50就应该涵盖与现实世界中的数字相关的任何用例。
限制不在小数位左侧或右侧。它是数字的总和。因此,如果您有Decimal(1000000) + Decimal("0.0001")
,精度设置为10
或更小,结果将等于Decimal(1000000)
(它可能会显示额外的零以匹配精度,但0.0001
将被删除)。舍入或溢出情况下的行为可以用信号配置,因此它可以设置标志,或者在发生时引发异常。文档对此进行了更详细的介绍。
这篇关于Python的Decimal类是可变宽度的吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:Python的Decimal类是可变宽度的吗?
基础教程推荐
- 将 YAML 文件转换为 python dict 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 如何在Python中绘制多元函数? 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01