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

285 投票
19 回答
823334 浏览
提问于 2025-04-16 09:05

这是我做到的方式:

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

差不多就是这样。
有没有更好看一点的方法来实现这个?

19 个回答

66

(注意:在CPython中,对于布尔类型(bool),这会返回True,这可能不是你想要的。感谢评论者的提醒。)

一行代码:

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
158

我最喜欢@ninjagecko的回答。

这个方法也可以用:

适用于Python 2.x版本

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

Python 3.x版本没有long这种类型

isinstance(n, (int, float))

还有一种类型complex是用来表示复数的

403

使用 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

撰写回答