如何获得最大可能的精度? (Python - 十进制)

2024-04-08

我正在使用Decimal https://docs.python.org/2/library/decimal.html用于需要精度的操作的类。

我想使用“最大可能”的精度。我的意思是,程序运行的系统可以处理的精确度。

要设置一定的精度很简单:

import decimal
decimal.getcontext().prec = 123 #123 decimal precision

我试图找出“Decimal”类可以计算的最大精度:

print(decimal.MAX_PREC)
>> 999999999999999999

所以我尝试将精度设置为最大精度(知道它可能不起作用..):

decimal.getcontext().prec = decimal.MAX_PREC

但是,当然,这会引发内存错误(关于除法)

所以我的问题是:如何计算出当前系统可以处理的最大精度?

额外信息:

import sys
print(sys.maxsize)
>> 9223372036854775807

试图这样做是一个错误。对于浮点新手来说,在问题上提高精度是一个诱人的陷阱,但它并没有那么有用,尤其是在这种极端情况下。

您的操作实际上并不需要“尽可能大”的精度,即使这是一个明确定义的概念。要么他们需要exact算术,在这种情况下decimal.Decimal完全是错误的工具,你应该看看类似的东西fractions.Fraction或符号计算,或者它们不需要那么高的精度,你应该确定你需要多少精度实际上需要并使用它。

如果你仍然想在你的问题上投入所有的精度,那么实际的精度将取决于你正在做什么样的数学,以及你试图一次在内存中存储多少个荒谬的精确数字。这可以通过分析您的程序和内存需求来确定Decimal对象,或者您可以将精度作为参数并二进制搜索不会导致崩溃的最大精度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获得最大可能的精度? (Python - 十进制) 的相关文章

随机推荐