Python中num.is_integer()如何判断浮点数是否为整数值
float.is_integer() 判定逻辑说明 Python浮点数内置方法is_integer()是float类型自带的原生方法,不需要额外编写逻辑,核心判定规则非常明确:校验当前浮点数在数值层面是否恰好等于某个整数,也就是小数部分是否全为0。
它可以直接区分10.0和10.1的核心原因:
- 10.0的数值完全等价于整数10,不存在非零小数部分,调用方法会返回
True - 10.1存在非零小数部分,即便受双精度浮点数存储规则影响存在微小精度误差,只要数值上无法和某个整数完全匹配,调用方法就会返回
False
自定义判断函数运行流程
对应的自定义整数判定函数代码如下:
def is_integer(num): if isinstance(num, float): return num.is_integer() elif isinstance(num, int): return True else: return False
函数逐分支运行逻辑:
- 首先判断入参是否为浮点数类型:如果是,直接返回浮点数自带
is_integer()方法的判定结果,刚好可以识别出小数部分为0、被冗余定义为浮点数的整数值 - 如果入参不是浮点数,继续判断是否为int整数类型,是则直接返回
True - 既不是浮点数也不是整数的其他类型入参(比如字符串、列表、字典等),统一返回
False
入参返回结果参考
不同类型入参的返回结果示例:
- 入参为普通整数
15:匹配int分支,返回True - 入参为
.0格式浮点数15.0:匹配float分支,返回True - 入参为带非零小数的浮点数
15.2:匹配float分支,返回False - 入参为非数值类型:匹配else分支,返回
False
内容的提问来源于stack exchange,提问作者Cats
相关产品推荐
相关产品推荐

