如何在python中使用八重精度
我遇到这个问题是为了检查一个数字是否可以被5整除 我所做的许多解决方案之一是如何在python中使用八重精度,python,floating-point,Python,Floating Point,我遇到这个问题是为了检查一个数字是否可以被5整除 我所做的许多解决方案之一是 def f(x): return x/5==x//5 这运行正常,最大值为2^53-1或10^17位。更重要的是,它给了我错误 我发现这是由于浮点错误。 在链接中,给出了二进制256(八倍精度) 没有发现任何有助于在python中实现此功能的内容 另外,我不需要解决方案来检查数字是否可以被5整除。默认精度意味着您可以选择不同的精度。你不能 发件人: 数字。实数(浮点) 这些表示机器级别的双精度 浮点数您受
def f(x):
return x/5==x//5
这运行正常,最大值为2^53-1或10^17位。更重要的是,它给了我错误
我发现这是由于浮点错误。
在链接中,给出了二进制256(八倍精度)
没有发现任何有助于在python中实现此功能的内容
另外,我不需要解决方案来检查数字是否可以被5整除。默认精度意味着您可以选择不同的精度。你不能
发件人:
数字。实数(浮点)
这些表示机器级别的双精度
浮点数您受底层机器的支配
可接受范围的体系结构(以及C或Java实现)和
溢出处理。Python不支持单精度
浮点数;节省的处理器和内存使用量
通常,使用这些的原因与
在Python中使用对象,因此没有理由使
具有两种浮点数的语言
无法保证您甚至拥有IEEE 754浮点值。即使您对问题提出了更高的精度,这种方法仍然是错误的。而且,即使是四倍精度也很难找到支持,更不用说八倍精度了。你直接跳到八倍精度的事实是一个警告信号,表明你认为精度是错误的。我知道这种方法是错误的,这里我“/”采用的是二进制精度,我的意思是,有没有一种方法可以改变“/”所采用的默认精度,试图在这个特定问题上使用更多的浮点精度,就像试图买一把更大的枪来射自己的脚一样。你是否有一个更精确的问题可以解决?有很多更精确的选项,从
numpy.longdouble
到decimal.decimal
到fracts.fracts
到gmpy2
,再到将计算重新格式化为整数运算,但选择什么选项取决于您需要解决的问题。