python3 解决除法中循环小数计算并判断循环体

python3 解决除法中循环小数计算并判断循环体

#解决分数变小数,小数位数受到计算机位数限制的问题。任意位小数除法2019.11.25
r = [] # 放结果
x = 0
#-------------计算过程-------------------------
def divcal(a,b,c): # 计算主函数 a/b 留c位小数
a1 = a
print(a1,b,c)
if a1 < b : #小于1,打印0.
a1 = a1 * 10
print(“0.”,end="")

else:             #当分子大于分母部分,计算整数部分,余数进行小数部分运算
    a2,a1 = divmod(a,b)
    print(str(a2),end="")
    print( ".", end="")
    a1 = a1 * 10
while len(r) < c:  #小数部分运算,一直算到指定到位数c
    aplus(a1,b)   #去判断是否小于除数,如果小于就加零
   # print(x)
    a2,a1 = divmod(x,b)
    r.append(a2)
    a1 = a1 * 10
#print(r)
for i in  range(0,len(r)):
    print(str(r[i]),end="")
print("")

#--------除法过程中递归方法找到能运算到数-----------
def aplus(a1,b): #迭代找到刚好大于除数到数字
global x #必须声明x是全局变量,否则结果回传不了
if a1 < b:
a1 = a1 * 10
r.append(0)
aplus(a1,b)
else:
x = a1
return
#---------找循环节--------------------------
def findxhj():
for i in range(0,int(len®/2)): #小数部分起点
for j in range(1,int(len®/2)): #循环节长度
str_1 = r[i:i+j]
str_2 = r[i+j:i+2*j]
if str_1 == str_2 :
print(“循环节:”, end="")
for i in range(0, len(str_1)):
print(str(str_1[i]), end="")
print("-----",len(str_1),“位”)
return

if name == ‘main’:
a = 9 # 被除数
b = 49 # 除数
c = 200 # 小数位数
divcal(a, b, c)
findxhj()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值