You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python中用户输入浮点数字符串转整数报错,转浮点数正常?

为什么Python中int()无法转换"3.0"这样的字符串,但float()可以转换"3"?

这本质是int()和float()两个函数对字符串输入的解析规则差异:

  • int()的严格性:int()要求传入的字符串必须是纯整数格式的字面量,不能包含小数点、指数符号这类非整数相关的字符。哪怕字符串代表的数值在数学上是整数(比如"3.0"),只要格式不符合纯整数要求,就会直接抛出ValueError。示例:

    int("3")  # 正常运行,返回3
    int("3.0")  # 报错:ValueError: invalid literal for int() with base 10: '3.0'
    
  • float()的兼容性:float()的设计兼容更多格式的数字字符串,它可以解析整数格式、标准浮点数格式甚至科学计数法格式的字符串。因为整数在数值上属于浮点数的子集,所以像"3"这样的整数字符串,会被float()正确转换为对应的浮点数3.0。示例:

    float("3")  # 正常运行,返回3.0
    float("3.0")  # 正常运行,返回3.0
    float("3e2")  # 正常运行,返回300.0
    

如果需要把"3.0"这类字符串转成整数,可以先转成浮点数再转整数:

x = int(float(input("Choose a number: ")))

内容的提问来源于stack exchange,提问作者Capocho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:23:08