如何检查数字是否为整数,精度高



有类似的问题:检查变量是否为整数,但我看不到我问题的答案。

的意思是,我最近在与大量战斗,所以我的朋友建议我安装 Python。我今天打开它,这样我就可以计算大数字并具有良好的精度,但是......如何使用这种精度?我的意思是,如果我做类似pow(31,123)它工作正常,但如果我想检查数字是否为整数,我会得到:

>>> (4.00000000000001).is_integer()
False
>>> (4.000000000000001).is_integer()
False
>>> (4.0000000000000001).is_integer()
True
>>> (4.00000000000000001).is_integer()
True

我想写一个简单的循环来找到丢番图方程的一些解,我需要从非常大的数字中取平方根并检查它是否是整数,但现在我处于紧要关头。有人可以帮助我或给我建议如何实现更好的精度吗?

例:

例如:$ 2x^2 = 1 + y^31 $,其中 x,y 是整数。我的想法是做循环,我递增 y(从 1 开始),加 1,除以 2,取平方根,然后它必须是整数才能满足方程。这就是我需要它的原因。

4.0000000000000001不能准确地表示为浮点数:

>>> format(4.0000000000000001, '.53f')
'4.00000000000000000000000000000000000000000000000000000'

所以这个数字确实是一个整数。在大多数系统上,您不能希望超过 15 位十进制数字:

>>> sys.float_info.dig
15

请参阅sys.float_info结构,dig属性表示:

浮点数中可以忠实表示的最大十进制数字数

如果需要更高的精度,请改用decimal模块。

您可以使用

以下代码检查给定数字是否是整数的平方:

def is_square(x):
    s = int(sqrt(x) + 0.5)
    return s * s == x

类似的方法也可以用于丢番图方程。只需将给定 x 找到的 y 转换为 int (y = int(y + 0.5)),然后检查丢番图方程对于给定的 x 和 y 是否成立

你能不使用内置函数"type"吗?我运行了以下内容:

print type(4.0000000000000000000000000000000000000000000000001)
print type(4)

并得到结果:

<type 'float'>
<type 'int'>

然后,您可以使用find()方法检查结果中"int"和"float"的出现

相关内容

  • 没有找到相关文章

最新更新