Sympy 检查数字是否自然
Sympy check if a number is natural
如果我是一些随机数,我如何检查它是否是一个整数 (∈ ℕ)?
>>> from sympy.core.numbers import Float
>>> Float(2)
2.00000000000000
>>> Float(2).is_integer
False # what ??
我找到了一个简单的解决方法,但我觉得这是一种破解方法:
>>> Float(2) % 1 == 0
True
>>> Float(2.5) % 1 == 0
False
那么有没有更正确的方法来判断一个数字是否是自然数?
这种查询出现在整个 SymPy 代码库中,我们对此的解决方案是在相关表达式上使用 as_int
。当 strict
标志关闭时,相当于 int 的 float 将作为 int 返回。否则(或者如果表达式不是整数)将引发 ValueError:
>>> from sympy import Float
>>> from sympy.core.compatibility import as_int
>>> as_int(2.0)
Traceback (most recent call last):
...
ValueError: 2.0 is not an integer
>>> as_int(2.0, strict=False)
2
在测试函数中使用它给出:
>>> def isint(i):
... try: as_int(i, strict=False)
... except: return False
... return True
>>> isint(Float(2))
True
如果我是一些随机数,我如何检查它是否是一个整数 (∈ ℕ)?
>>> from sympy.core.numbers import Float
>>> Float(2)
2.00000000000000
>>> Float(2).is_integer
False # what ??
我找到了一个简单的解决方法,但我觉得这是一种破解方法:
>>> Float(2) % 1 == 0
True
>>> Float(2.5) % 1 == 0
False
那么有没有更正确的方法来判断一个数字是否是自然数?
这种查询出现在整个 SymPy 代码库中,我们对此的解决方案是在相关表达式上使用 as_int
。当 strict
标志关闭时,相当于 int 的 float 将作为 int 返回。否则(或者如果表达式不是整数)将引发 ValueError:
>>> from sympy import Float
>>> from sympy.core.compatibility import as_int
>>> as_int(2.0)
Traceback (most recent call last):
...
ValueError: 2.0 is not an integer
>>> as_int(2.0, strict=False)
2
在测试函数中使用它给出:
>>> def isint(i):
... try: as_int(i, strict=False)
... except: return False
... return True
>>> isint(Float(2))
True