Python中能否一步将浮点数字符串转换为整数?
浮点数字符串转int:一步到位还是必须两步?
其实直接用int("12.4")会直接报错——Python的int()函数不认带小数点的字符串,它只接受整数字符串或者数值类型的输入。所以常规且稳妥的做法确实是两步:先转float再转int:
string = "12.4" x = int(float(string)) # 结果是12
不过要说“一步到位”的方法,也不是没有,只是要看你的具体场景:
字符串分割法:如果你的字符串一定是
整数.小数的格式,直接按小数点分割取前半部分:x = int("12.4".split(".")[0])但要注意特殊情况,比如字符串是
".4"(没有整数部分)或者"12."(只有整数部分加小数点),这时候得加个判断:s = "12.4" x = int(s.split(".")[0]) if "." in s else int(s)正则提取法:如果要处理更复杂的情况(比如带负号的
"-12.4",或者字符串里有其他无关字符),可以用正则提取整数部分:import re s = "-12.4" x = int(re.search(r'^-?\d+', s).group()) # 结果是-12
最后要提醒下不同方法的坑:
- 转float再转int的方式,对于超大数字可能会有精度丢失(比如
"12345678901234567.8"转float后会变成近似值,再转int就不对了),这时候字符串处理的方法更安全。 - 字符串分割和正则法,要考虑到各种异常格式的情况,不然容易抛出索引错误或者匹配失败的问题。
内容的提问来源于stack exchange,提问作者brownleaf




