Python 中如何把字符串解析成整数或浮点数?

Python 字符串转数字:int('42') 转整数、float('3.14') 转浮点。非法输入抛 ValueError,需 try/except 容错。本文介绍转换方法及常见坑。

最佳实践
Python 中如何把字符串解析成整数或浮点数?封面

转整数用 int('42'),转浮点用 float('3.14')。字符串必须是合法数字形式,否则抛 ValueError,处理用户输入时记得 try/except。

基本转换

int('42')       # 42
float('3.14')   # 3.14
float('42')     # 42.0

容错处理

def to_number(s, default=0):
    try:
        return int(s)
    except ValueError:
        try:
            return float(s)
        except ValueError:
            return default

print(to_number('42'))     # 42
print(to_number('3.14'))   # 3.14
print(to_number('abc'))    # 0

常见坑

int('3.14')      # ValueError!int 不能直接转小数字符串
int(float('3.14'))  # 3——先转 float 再取整

int('  42  ')    # 42——首尾空白自动忽略
int('42px')      # ValueError——带单位不行

int('1,000')     # ValueError——千分位逗号要先去掉
int('1,000'.replace(',', ''))  # 1000

进制转换

int('ff', 16)    # 255(十六进制)
int('0b101', 2)  # 5(二进制)
int('777', 8)    # 511(八进制)

常见问题(FAQ)

Q:如何判断字符串能否转数字?
A:转换前可以用 s.isdigit()(只认正整数)、正则或 str.isnumeric();最稳妥的还是直接 try。

Q:科学计数字符串?
A:float('1e5') 得到 100000.0,float 支持;int 不支持。

Q:精度要求高(金额)?
A:用 Decimal('3.14'),避免 float 的二进制浮点误差。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台