仅当“无损”时才转换为整数?
我希望仅当转换是“无损的”时才将字符串或数字转换为整数,或者仅当字符串或数字确实是整数时才将其转换为整数。
例如,
3.0(一个确实是整数的浮点数) ->3。'3.000'(一个整数字符串) ->3。3.1-> 引发异常。'4.2'-> 引发异常。
直接做int(x)将转换3.1为3.
这是我拥有的最好的:
def safe_cast_to_int(x):
int_x = int(x)
if np.issubdtype(type(x), np.floating):
assert int_x == x,
f"Can't safely cast a non-integer value ({x}) to integer"
return int_x
但我想知道是否有更好或更 Pythonic 的方式?
回答
如果我理解正确,那么您只想投射一个整数。如果是这种情况,您可以先将其转换为浮点数,然后使用float.is_integer()函数检查它是否为整数。
以下是带有问题值的示例。
>>> float('3.0').is_integer()
True
>>> float('3.000').is_integer()
True
>>> float('3.1').is_integer()
False
>>> float('4.2').is_integer()
False