我用python写了这个函数:
def is_number_like(x):
try:
int(x) + 1
except:
return False
return True
如果我写float(x)
或有什么区别int(x)
吗?或者+ 1
在某些情况下部分有用吗?
编辑:is_number_like
将True
在传递字符串时返回 - 这是我不想成为的。我想要一个函数,只要将False
类似文本的值作为参数传递,它就会返回。有办法吗?
也许:
def is_number_like(x):
try:
x + 1
except:
return False
return True
会更好?
或者可能:
def is_number_like(x):
try:
float(x + 1) == float(x) + 1
except:
return False
return True
我想编写一个模块,它可以接受任何表现良好的数字类型,它代表一维实数(例如SimpleITK.sitkUInt8
数字类型numpy.int32
等等......)。
恐怕可能有库,在转换为 int 或 float 时不会出错。例如我可以想象这样的情况:
>>> z = SomeComplexType(1. + 2.j)
>>> z
(1+2j)
>>> z -= 2.j
>>> z
(1+0j)
>>> float(z) # does not raise an error
1.
这可能吗,我应该担心这种情况吗?
并且所有设计良好的实数类型都将转换为float
没有错误吗?
附言。我已经读过这个: 如何检查字符串是否为数字(浮点数)?