将非整数转换为整数python
对不起,以前的含糊不清。我需要测试一个给定的变量是否是一个整数(如果存在差异,则不是数学上的整数定义)。我目前使用函数将非整数转换为整数python
isinstance([var],(int,long))。
当给定2作为变量(var)它打印真实。但是,当给出2.0它打印假。
这是一个问题,因为我需要一个函数来响应2.0,2.00,2000和任何数字上等于整数的数字是一个整数。虽然这些数字在数字上不等效(1.4,3.14,2.7等)是非整数有没有我可以用来实现这个功能或特定的代码?
注意:我相信,根据以前的反馈,“pythonically”2.0实际上并不是一个整数。即使如此,它在数学上,功能必须返回它。
为什么不将它转换为int?
>>> int(2.00)
2
我知道,这是更容易更容易请求原谅比蟒蛇 权限,但在这种情况下,有必要
Offcourse,你可以ask for forgiveness here rather than permission
。首先假设你有一个整数,如果不是,则重复ask for forgiveness
。
while True:
try:
value = int(raw_input())
break
except ValueError:
pass
但是,如果你仍然想ask for permission
,你可能反而要以下列方式承担使用isinstance,浮子可以被转换为整数
isinstance(2.0,(int,long, float))
函数“isinstance(var,(int,long,float))”正是我所需要的!谢谢。 – user2944352
也许我误解了这个问题我第一个答案。如果你试图区分7.00和7.01,你可以使用类似的东西,这将达到一定的精度:
def likeint(value):
return value - int(value) == 0
>>> likeint(8.0)
True
>>> likeint(7.0000000001)
False
>>> likeint(7.0000000000)
True
>>> likeint(7)
True
你看过http://docs.python.org/2/library/stdtypes的.html#数值类型-INT-浮动长期复杂吗? –
你是否有机会通过使用'eval(raw_input('Enter a integer:'))'或'input('输入整数:')'直接评估用户的输入? – Blender
为什么这个问题不清楚?我不明白。 – Makoto