热爱python的小学生 2022-04-12 20:08 采纳率: 87.5%
浏览 39
已结题

这是python的bug还是我代码或算式有问题希望解答

将横列的数字输出为数列
源码

q=1
while q==1:#无限循环
    zz=input(("请输入您要转换的数字:"))#输入数字(zz)
    z=int(zz)#将输入数字转换为数字类型(z)
    ws=int(len(zz))#确定数位
    while ws>=1:
        a=z#将数值(z)复制到变量(z)用于是后期确定否循环 (a)用于计算
        b=int(a/(10**(ws-1)))#确定输入数字第一位(b)
        e=z/10#将(z)的小数点向后移动一位
        print(b)#显示第一位数
        z=a-(b*(10**(ws-1)))#(a)减去10的位数减二次方
        ws=ws-1

运行结果

请输入您要转换的数字:99999999999999999999
10
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
-1

不信的话可以自己运行一下(注意数字一定要大并且所有数位全是9)

  • 写回答

3条回答 默认 最新

  • 溪风沐雪 2022-04-17 12:46
    关注
    问题出在这一行
    b=int(a/(10**(ws-1)))
    用int强制转换小数到整数时,一般是向下取整的,但是当小数全是9,且位数足够多的时候,这里的强制转换结果就是10,所以就出现了你现在的问题
    具体原因应该还是跟浮点数长度范围有关吧,你可以去查一下相关的资料
    你这个问题要修正也很简单,改为:
    b=a//(10**(ws-1))
    即可,直接除出整数
    

    如有帮助,请采纳!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月1日
  • 已采纳回答 4月23日
  • 创建了问题 4月12日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度