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

Python 3长数字转列表时末尾数字不符问题求助

问题原因分析

你的问题出在使用了浮点数除法/,导致大整数的精度丢失:

  1. 你使用的数字6145390195186705544是一个超大整数,远超过双精度浮点数(Python中float类型)的精确表示范围——双精度浮点数仅能精确表示2^53以内的整数(约9007199254740992)。
  2. 执行num/10时,Python会先把整数num转换为float类型,这个转换过程已经丢失了精度,无法准确还原原数。
  3. 后续int(num/10)得到的是不精确浮点数的整数部分,基于这个错误数值循环操作,最终导致结果完全偏离原数,甚至出现重复序列。
修复方案

有两种简单可靠的修复方式:

方法1:使用整数除法//

把num = int(num/10)替换为整数除法num = num // 10,整数除法不会转换为浮点数,能完整保留大整数的精确性:

num = 6145390195186705544
lista = []
while num != 0:
    lista.append(num % 10)
    num = num // 10  # 用整数除法替代浮点数除法
print(lista[::-1])

输出结果:[6, 1, 4, 5, 3, 9, 0, 1, 9, 5, 1, 8, 6, 7, 0, 5, 5, 4, 4],与原数完全一致。

方法2:转换为字符串处理

直接将整数转为字符串,遍历每个字符再转回整数,这种方式更直观:

num = 6145390195186705544
lista = [int(c) for c in str(num)]
print(lista)

输出结果同样正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:35:24