如何在Python中使用isinstance检查float?

时间:2018-07-19 14:50:57

标签: python

我无法理解以下内容:  当我检查“ RUN_ID”的类型时,它会清楚地指出“ float”。但是当我检查它是否为float时,它返回False。 到底是什么类型?如何检查?

tags.loc[0, 'RUN_ID']
Out[36]: 38607.0   
type(tags.loc[0, 'RUN_ID'])
Out[34]: float 
isinstance(type(tags.loc[0, 'RUN_ID']),np.float64)
Out[32]: False
isinstance(type(tags.loc[0, 'RUN_ID']),np.float32)
Out[33]: False

isinstance(type(tags.loc[0, 'RUN_ID']),float)
Out[35]: False

4 个答案:

答案 0 :(得分:5)

您使用的isinstance错误。代替

isinstance(type(tags.loc[0, 'RUN_ID']),float)

只要做

isinstance(tags.loc[0, 'RUN_ID'],float)

type()函数返回类型为type的对象,您需要该对象本身的类型。

答案 1 :(得分:2)

isinstance(type(tags.loc[0, 'RUN_ID']),float) 

返回false,因为type(tags.loc[0, 'RUN_ID'])返回float,实际上是type类型。您可以说

type(type(tags.loc[0, RUN_ID'])) 

因此,您实际上是在检查类型float的类型是否与类型float(即False)相同。

所以也许尝试

isinstance(tags.loc[0, 'RUN_ID'],float)?

答案 2 :(得分:2)

检查常规浮点类型而不是numpy。测试结果如下

w = isinstance(n, float)    # True
x = isinstance(n, np.float32)   # False
y = isinstance(n, np.float64)   # False
z = type(n) == float        # True

答案 3 :(得分:0)

我相信isinstance()会检查某个值是否是某个类,而不是两个类值是否相同。

例如,isinstance(0.35, float)返回True。

您拥有的方式基本上是在问“类型float是否是float的实例?”这是不正确的。