RYAN 发表于 2024-10-27 17:05:53

手搓高精度加法(python)

各位一定遇到个这样的情况:0.1+0.2=0.30000000000000001
想要解决只有2个办法:
1、大力出奇迹:缩减精度
2、高精度加法
今天我就来教大家手搓高精加:
def super_add_sub(a,b,t):
    ca = a
    cb = b
    l1 = []
    l2 = []
    ans = []

    # 将数字a的每一位拆分存入列表l1中
    while ca != 0:
      l1.append(ca%10)
      ca = ca//10

    # 将数字b的每一位拆分存入列表l2中
    while cb != 0:
      l2.append(cb%10)
      cb = cb//10

    j = 0# 初始化进位为0

    # 如果l1的长度小于l2的长度,则在l1末尾补0,使得l1和l2长度相等
    while len(l1) < len(l2):
      l1.append(0)

    # 如果l2的长度小于l1的长度,则在l2末尾补0,使得l1和l2长度相等
    while len(l2) < len(l1):
      l2.append(0)

    # 逐位相加,并处理进位
    for i in range(len(l1)):
       ans.append((l1+l2+j)%10)
       j = (l1+l2+j)//10

    if t == 0:
      # 处理最高位的进位
      ans.append(j)

    # 将结果列表反转,因为我们是从低位到高位计算的
    ans.reverse()

    # 将结果列表中的每个元素转换为字符串
    ans =

    # 将结果列表中的字符串元素拼接成一个字符串,并转换为整数返回
    return 这是子函数(t代表是否为小数1代表是,0代表否)def super_add(a,b):这是主函数

整体思路是模拟人类竖式计算。
听懂掌声!
页: [1]
查看完整版本: 手搓高精度加法(python)