python實現高精度減法
阿新 • • 發佈:2019-01-08
減法的實現同加法基本一致, 也是模擬豎式計算, 額外的處理了一下輸入數值大小的問題,否則不然程式碼量可以更少. 在此不再做過多陳述, 從程式碼看問題吧!
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))
注意: 輸入僅限兩個正整數, 輸入不分大小