【发布时间】:2023-03-08 13:36:01
【问题描述】:
我将Decimal 类用于需要精度的操作。
我想使用“尽可能大”的精度。有了这个,我的意思是尽可能精确地运行程序的系统可以处理。
要设置一定的精度很简单:
import decimal
decimal.getcontext().prec = 123 #123 decimal precision
我试图找出“十进制”类可以计算的最大精度:
print(decimal.MAX_PREC)
>> 999999999999999999
所以我尝试将精度设置为最大精度(知道它可能不起作用..):
decimal.getcontext().prec = decimal.MAX_PREC
但是,当然,这会引发 内存错误(在除法上)
所以我的问题是:如何确定当前系统可以处理的最大精度?
额外信息:
import sys
print(sys.maxsize)
>> 9223372036854775807
【问题讨论】:
-
您的系统可能有内存可用于一些精度为 X 的对象,但不是很多。因此,没有一个单一的答案——在内存耗尽之前您可以使用的最大精度取决于您要进行的计算。
-
我尝试做你所做的,它不会引发任何内存错误并改变精度。你的python版本是什么?另外,你可能想看看this answer
-
@RickM。我使用的是python 3.6.5(64位),你有没有试过用无限的非重复小数做除法或其他东西?
-
@Eli 当然,你可以期待 MemoryError 但这并不意味着没有设置精度(正如 Eric Postpischii 所说)。正如您现在的问题,您应该在除法上添加内存错误以使事情更清楚。
-
@RickM。我已经编辑了问题,但问题并没有太大变化,只是想要一种尽可能精确的方法......
标签: python memory floating-point decimal precision