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

八进制转十进制结果异常:输入123为何输出6而非83?

八进制转十进制代码错误原因分析

调用octalToDecimal(123)输出6而非预期的83,核心原因有两个:

  • Python不支持++i自增语法
    你写的++i在Python里根本不会实现自增,它会被解析为+(+i),也就是i的值始终是初始的0。这导致每次计算rem * 8**i时,都是rem * 1,最终结果就是3+2+1=6。要实现自增,必须写成i += 1或者i = i + 1。

  • 浮点数除法的潜在问题(当前案例未爆发,但需修正)
    代码里用octalNumber /= 10做除法会得到浮点数(比如123/10=12.3),虽然配合math.floor暂时能取整,但数字较大时容易出现精度丢失。更稳妥的是用整数除法octalNumber //= 10,直接得到整数结果,还能省去math.floor的调用。

修正后的代码如下:

def octalToDecimal(octalNumber):
    decimalNumber = 0
    i = 0
    while octalNumber != 0:
        rem = octalNumber % 10
        octalNumber //= 10
        decimalNumber += rem * 8**i
        i += 1
    print(decimalNumber)

octalToDecimal(123)  # 输出83

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:47:04