我遇到了这个问题,以检查数字是否可以被5整除。
我已完成的许多解决方案之一是
def f(x):
return x/5==x//5
运行正常,最大2 ^ 53-1或10 ^ 17位数。除此之外,它给了我错误。
我发现这是由于floatig point错误。 IEEE_754#Basic_and_interchange_formats
在链接中,假定存在binary256(八倍精度)。
找不到任何有用的方法来在python中实现。
ps。我不需要解决方案来检查数字是否可以被5整除。
答案 0 :(得分:0)
“默认精度”表示您可以选择其他精度。你不能。
来自https://docs.python.org/3/reference/datamodel.html:
数字。实数(浮点数)
这些代表机器级别的双精度 浮点数字。 您受底层计算机的摆布 可接受范围的体系结构(以及C或Java实现) 处理溢出。 Python不支持单精度 浮点数字;节省的处理器和内存使用量 通常,使用这些工具的原因与以下方法的开销相形见war 在Python中使用对象,因此没有理由使 具有两种浮点数的语言。
无法保证您甚至拥有 IEEE 754浮点值。