3。 '3.000'(整数字符串)-> 3。 -6ren">
gpt4 book ai didi

python - 仅当 "Lossless"时才转换为整数?

转载 作者:行者123 更新时间:2023-12-05 08:47:31 28 4
gpt4 key购买 nike

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

例如,

  • 3.0(一个确实是整数的 float )-> 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 ,然后使用 float.is_integer() function 检查。如果它是一个整数。

以下是带有问题值的示例。

>>> float('3.0').is_integer()
True
>>> float('3.000').is_integer()
True
>>> float('3.1').is_integer()
False
>>> float('4.2').is_integer()
False

关于python - 仅当 "Lossless"时才转换为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67443134/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com