我想区分
2.0
或2
和实际的小数,如2.4
。最好的办法是什么?目前我正在做:
def is_fractional(num):
if not str(num).replace('.','').isdigit(): return
return float(num) != int(num)
>>> is_fractional(2)
False
>>> is_fractional(2.1)
True
>>> is_fractional(2.0)
False
>>> is_fractional('a')
>>>
Tags:
该操作是内置的:
文档是here。你知道吗
附录
初始解决方案只适用于
float
。下面是一个更完整的答案,包括测试:为什么不检查整数的截断值和精确值之间的差值是否不为零?你知道吗
如果您的一些数字是
decimal.Decimal
,则它们可能存在范围问题,无法转换为float,或者删除实际存在的小数部分,具体取决于它们的精度:str
方法通常会起作用(如上图所示的模块化问题案例),因此您可以坚持这样做,但最好尝试使用is_integer
并在失败时使用回退:(正如其他人所注意到的,如果这些类型是允许的,那么您也需要在这里检查
int
和long
,因为它们在定义上是整数,但缺少is_integer
属性)。你知道吗在这一点上,值得考虑所有其他的答案,但这里有一个具体的答案十进制。十进制经办人:
相关问题 更多 >
编程相关推荐