将横列的数字输出为数列
源码
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)
问题出在这一行
b=int(a/(10**(ws-1)))
用int强制转换小数到整数时,一般是向下取整的,但是当小数全是9,且位数足够多的时候,这里的强制转换结果就是10,所以就出现了你现在的问题
具体原因应该还是跟浮点数长度范围有关吧,你可以去查一下相关的资料
你这个问题要修正也很简单,改为:
b=a//(10**(ws-1))
即可,直接除出整数
如有帮助,请采纳!
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 = a // (10 ** (ws - 1)) # 确定输入数字第一位(b)
e = z / 10 # 将(z)的小数点向后移动一位
print(b) # 显示第一位数
z = a - (b * (10 ** (ws - 1))) # (a)减去10的位数减二次方
ws = ws - 1
你想这样?
我比较想找到我的问题