仅当“无损”时才转换为整数?

我希望仅当转换是“无损的”时才将字符串或数字转换为整数,或者仅当字符串或数字确实是整数时才将其转换为整数。

例如,

  • 3.0(一个确实是整数的浮点数) -> 3
  • '3.000'(一个整数字符串) -> 3
  • 3.1 -> 引发异常。
  • '4.2' -> 引发异常。

直接做int(x)将转换3.13.

这是我拥有的最好的:

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


以上是仅当“无损”时才转换为整数?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>