检查一个数字是整数还是浮点数

我是这样做的:

inNumber = somenumber
inNumberint = int(inNumber)
if inNumber == inNumberint:
print "this number is an int"
else:
print "this number is a float"

类似的 还有什么更好看的方法吗?< / p >

702005 次浏览

使用isinstance

>>> x = 12
>>> isinstance(x, int)
True
>>> y = 12.0
>>> isinstance(y, float)
True

所以:

>>> if isinstance(x, int):
print('x is a int!')


x is a int!

对于长整数,上述方法将不起作用。所以你需要做的是:

>>> x = 12L
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x, int)
False

请求原谅比请求允许容易。简单地执行操作。如果它工作,对象是一个可接受的,合适的,适当的类型。如果操作不工作,则对象不是合适的类型。了解类型很少有帮助。

简单地尝试操作,看看它是否有效。

inNumber = somenumber
try:
inNumberint = int(inNumber)
print "this number is an int"
except ValueError:
pass
try:
inNumberfloat = float(inNumber)
print "this number is a float"
except ValueError:
pass

你也可以使用__abc0 例子:< / p >

if type(inNumber) == int : print "This number is an int"
elif type(inNumber) == float : print "This number is a float"

(注意:这将为类型bool返回True,至少在cpython中是这样,这可能不是你想要的。谢谢你的评论。)

一行程序:

isinstance(yourNumber, numbers.Real)

这避免了一些问题:

>>> isinstance(99**10,int)
False

演示:

>>> import numbers


>>> someInt = 10
>>> someLongInt = 100000L
>>> someFloat = 0.5


>>> isinstance(someInt, numbers.Real)
True
>>> isinstance(someLongInt, numbers.Real)
True
>>> isinstance(someFloat, numbers.Real)
True

请检查这个:进口号码

import math


a = 1.1 - 0.1
print a


print isinstance(a, numbers.Integral)
print math.floor( a )
if (math.floor( a ) == a):
print "It is an integer number"
else:
print False

虽然X是浮点数,但它的值是整型,所以如果你想检查它的值是整型,你不能使用isinstance,你需要比较值而不是类型。

这是一段检查数字是否是整数的代码,它适用于Python 2和Python 3。

import sys


if sys.version < '3':
integer_types = (int, long,)
else:
integer_types = (int,)


isinstance(yourNumber, integer_types)  # returns True if it's an integer
isinstance(yourNumber, float)  # returns True if it's a float

注意Python 2有intlong两种类型,而Python 3只有int类型。

如果你想检查你的数字是否是代表intfloat,请执行此操作

(isinstance(yourNumber, float) and (yourNumber).is_integer())  # True for 3.0

如果你不需要区分int和float,并且都可以,那么ninjagecko的答案就是你要走的路

import numbers


isinstance(yourNumber, numbers.Real)

我最喜欢ninjagecko的回答。

这也可以:

Python 2。x < br >

isinstance(n, (int, long, float))

Python 3。x没有< em > < / em >长

isinstance(n, (int, float))

还有类型复杂< em > < / em >用于复数

variable.isnumeric检查值是否为整数:

 if myVariable.isnumeric:
print('this varibale is numeric')
else:
print('not numeric')

你可以用模数来确定x在数值上是否是整数。isinstance(x, int)方法仅根据类型确定x是否为整数:

def isInt(x):
if x%1 == 0:
print "X is an integer"
else:
print "X is not an integer"
def is_int(x):
absolute = abs(x)
rounded = round(absolute)
if absolute - rounded == 0:
print str(x) + " is an integer"
else:
print str(x) +" is not an integer"




is_int(7.0) # will print 7.0 is an integer

这个解决方案怎么样?

if type(x) in (float, int):
# do whatever
else:
# do whatever

试试这个…

def is_int(x):
absolute = abs(x)
rounded = round(absolute)
return absolute - rounded == 0

已在Python 3.6.3 Shell中尝试

>>> x = 12
>>> import numbers
>>> isinstance(x, numbers.Integral)
True
>>> isinstance(x,int)
True

找不到工作的方向。

我知道这是一个旧线程,但这是我正在使用的东西,我认为它可能有帮助。

它适用于python 2.7和python 3<.

def is_float(num):
"""
Checks whether a number is float or integer


Args:
num(float or int): The number to check


Returns:
True if the number is float
"""
return not (float(num)).is_integer()




class TestIsFloat(unittest.TestCase):
def test_float(self):
self.assertTrue(is_float(2.2))


def test_int(self):
self.assertFalse(is_float(2))

更新:试试这个


inNumber = [32, 12.5, 'e', 82, 52, 92, '1224.5', '12,53',
10000.000, '10,000459',
'This is a sentance, with comma number 1 and dot.', '121.124']


try:


def find_float(num):
num = num.split('.')
if num[-1] is not None and num[-1].isdigit():
return True
else:
return False


for i in inNumber:
i = str(i).replace(',', '.')
if '.' in i and find_float(i):
print('This is float', i)
elif i.isnumeric():
print('This is an integer', i)
else:
print('This is not a number ?', i)


except Exception as err:
print(err)
absolute = abs(x)
rounded = round(absolute)
if absolute - rounded == 0:
print 'Integer number'
else:
print 'notInteger number'

你可以用简单的if语句来做

检查浮动

如果类型(a) = =类型(1.1)

检查整数类型

如果类型(a) = =类型(1)

使用python中最基本的类型推断:

>>> # Float Check
>>> myNumber = 2.56
>>> print(type(myNumber) == int)
False
>>> print(type(myNumber) == float)
True
>>> print(type(myNumber) == bool)
False
>>>
>>> # Integer Check
>>> myNumber = 2
>>> print(type(myNumber) == int)
True
>>> print(type(myNumber) == float)
False
>>> print(type(myNumber) == bool)
False
>>>
>>> # Boolean Check
>>> myNumber = False
>>> print(type(myNumber) == int)
False
>>> print(type(myNumber) == float)
False
>>> print(type(myNumber) == bool)
True
>>>

在我看来,最简单和最有弹性的方法

我不确定为什么以前没有提出过这个建议,但是在名为is_integer()的浮点数上使用内置的Python方法如何?基本上你可以给它一个浮点数,然后问它是不是整数。例如:

>>> (-13.0).is_integer()
True


>>> (3.14).is_integer()
False

然而,为了完整起见,考虑:

isinstance(i, int) or i.is_integer()