兩個非常大的數字(超過Long最大能表達的範圍)的加法運算(不能使用JAVA現成的類)
阿新 • • 發佈:2019-02-18
思路:
大數用String類來儲存。大數的每個位分別相加,保留每個位的進位給下一位,最後結果依然儲存在String類中。
public class BigNumber { public String add(String a, String b) { String ret = ""; int lenA = a.length(); int lenB = b.length(); int maxLen = lenA > lenB ? lenA : lenB; int minLen = lenA < lenB ? lenA : lenB; StringBuilder s = new StringBuilder(); //要保證兩個數位數相同,位數少的前面補0 for (int i = 0; i < maxLen - minLen; i++) { s.append(0); } if (minLen == lenA) { s.append(a); } else { s.append(b); } s = new StringBuilder(); int tempA, tempB, result; int sc = 0;//進位 for (int i = maxLen - 1; i >= 0; i--) { tempA = Integer.valueOf(a.charAt(i)); tempB = Integer.valueOf(b.charAt(i)); result = tempA + tempB + sc; sc = result / 10; result = result % 10; s.append(result); } //如果加到最高為仍有進位,那麼也要加上去 if (sc == 1) { s.append(1); } //因為是從個位依次相加的,所以結果要倒過來 ret = s.reverse().toString(); return ret; } }