1. 程式人生 > >python實現高精度減法

python實現高精度減法

減法的實現同加法基本一致, 也是模擬豎式計算, 額外的處理了一下輸入數值大小的問題,否則不然程式碼量可以更少. 在此不再做過多陳述, 從程式碼看問題吧!

from functools import reduce
def cmpare(a, b):#定義函式比較兩個數值大小
    if (len(a) != len(b)):
        return len(a) - len(b)
    else:
        for i in range(len(a)):
            if a[i] != b[i]:
                return a[i] - b[i]
    return
0 def minus(a, b): optr = "+"; if (cmpare(a, b) < 0): optr = '-'#如果減數大於被減數,設定符號為負號 temp = a#並且交換兩個數,保證始終用大數減小數 a = b b = temp a = list(map(lambda x : int(x), ("0" + str(a)).strip())) b = list(map(lambda x : int(x), ("0" + str(b)).strip())) if len(a) > len(b): for
x in range(len(a) - len(b)): b.insert(0, 0) else: for x in range(len(b) - len(a)): a.insert(0, 0) for i in range(len(a) - 1, 0, -1): if (a[i] >= b[i]): a[i] -= b[i] else: a[i] = a[i] + 10 - b[i] a[i - 1] -= 1 return
int(optr + reduce(lambda x, y : str(x) + str(y), a)) a = input("input a: ") b = input("input b: ") print(minus(a, b))

注意: 輸入僅限兩個正整數, 輸入不分大小