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

字符串转32位int时如何检测溢出并实现数值截断?

字符串转32位有符号整数并截断的解决方案

你的代码存在几个关键问题:

  • 缺少字符串转整数的核心逻辑,num变量未定义
  • sys.maxsize的取值依赖系统位数(比如64位系统对应64位整数最大值),不能用来判断32位整数的固定范围
  • 未处理数值在合法范围内的返回分支

以下是修正后的完整实现:

def str_to_32bit_int(s):
    try:
        num = int(s)
    except ValueError:
        # 可根据需求调整非数字字符串的处理逻辑,比如返回0或抛出异常
        return 0
    
    min_32int = -2147483648
    max_32int = 2147483647
    
    if num > max_32int:
        return max_32int
    elif num < min_32int:
        return min_32int
    else:
        return num

代码说明:

  1. 字符串转整数:通过int(s)完成转换,并用try-except捕获非数字输入的异常,避免程序崩溃
  2. 固定范围判断:直接使用32位有符号整数的固定上下限(-2^31和2^31-1),不依赖系统相关变量,保证跨平台一致性
  3. 完整分支覆盖:处理了超出上限、低于下限、在合法范围内三种情况,返回对应结果

如果可以确保输入都是合法数字字符串,可简化为更简洁的版本:

def str_to_32bit_int(s):
    num = int(s)
    min_32int = -2147483648
    max_32int = 2147483647
    return max(min(num, max_32int), min_32int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:09:59