Python 大数字字符串求和(包含多位小数,长整数)

解决思路:

  1. 找到两个数字字符串的小数点的位置,没有的补上 “.0”。
  2. 以小数点的位置给两个数字字符串补上0,让二者同等长度。
  3. 从右向左循环相加,组合成结果字符串,遇到小数点直接添加小数点。
  4. 将最后的进位与结果组合,正常最终结果
    # num1, num2 两个字符串
    def long_sum(num1,num2):
        #1 参数准备
        carry = 0 # 默认进位为0
        res = ""  # 最后结果
        #2 计算长度,与小数点位置
        size1 = len(num1)
        log1 = num1.find('.')
        if log1 == -1: # 没有小数点,就对该数字字符串转化为小数字符串
            size1 += 2
            num1 += ".0"
            log1 = size1- 2
        size2 = len(num2)
        log2 = num2.find('.')
        if log2 == -1:
            size2 += 2
            num2 += ".0"
            log2 = size2- 2
        # print(num1,num2,) # 补齐小数点 1234.56 123456.0
        # 3补全字符串
        # 3.1 整数部分补齐
        temp = log2-log1
        if temp > 0:
            num1 = "0"*(temp) + num1
        else:
            num2 = "0"*(temp*-1) + num2
        # 3.2 小数部分补全
        temp = size2-1-log2 - (size1 - 1- log1)
        if temp>0:
            num1 = num1 + "0"*(temp)
        else:
            num2 = num2 + "0"*(temp*-1)
        # print(num1,num2,)   # 补全后 001234.56 123456.00
      
        #4 循环计算
        for n in range(len(num1)-1,-1,-1):
            # a 求和
            if num1[n] == "." or num2[n] == ".":
                res = "." + res  
                continue
    
            temp = int(num1[n]) + int(num2[n]) + carry
            # b 求模
            carry = temp // 10
            # c 求余 并赋值
            res = str(temp % 10) + res 
        if carry > 0:
            res = carry + res 
    
        return res
    print(long_sum('123456', '123456'))

     

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值