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

二进制加法函数未通过全部测试,大数值场景出错求助

问题原因分析

你的代码处理超大整数时出错,核心问题是浮点数精度丢失:

  • 当执行n / 2时,哪怕n是整数,结果也会转为浮点数。Python默认的64位双精度浮点数只能精确表示小于2^53的整数,超过这个范围的大整数转成浮点数后会丢失低位信息,导致math.floor(n/2)得到错误的整数,后续二进制转换自然出错。
  • 另外你的条件判断逻辑冗余,虽然不是直接错误,但多余的分支容易引发潜在问题。
解决方法

用**整数除法//**替代浮点数除法+floor操作,同时简化判断逻辑,还要处理n=0的边界情况:

修正后的代码:

def add_binary(a, b):
    n = a + b
    if n == 0:
        return "0"
    binary = ''
    while n > 0:
        # 直接取余数得到当前二进制位,简化逻辑
        binary += str(n % 2)
        # 整数除法,处理任意大小整数都不会丢失精度
        n = n // 2
    return binary[::-1]
关键改动说明
  • 替换除法方式:n // 2是纯整数运算,对任意大小的整数都能精确计算,彻底规避浮点数精度丢失问题。
  • 简化二进制位获取:不管n是1还是更大的数,n%2直接得到当前最低位的二进制值(0或1),转成字符串拼接即可,去掉冗余的if判断,逻辑更清晰。
  • 补充边界处理:当a和b都是0时,原代码会返回空字符串,修正后返回正确的"0"。

测试你提供的未通过用例,现在都能正确生成对应的二进制字符串。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:27:23