在平常的業務中也許會有很大的數字無法使用int或者long來儲存了,那麼只能儲存成string型別,當需要兩個這樣的數字相加的時候,怎麼辦呢?字串假如都是數字,不包含特殊符號或字母
整體步驟:
將兩個字串長度補全,補成一致長度,長度短的左邊補0;
定義乙個新的整形陣列,長度為字串的長度+1,因為結果的長度可能超出原字串的長度(整形陣列值預設為0);
倒敘迴圈相加,將結果%10的餘位放在低位,結果的/10的結果放在高位;最終合併結果返回。
public string bignumberplus(string a, string b) else
int arrc = new int[a.length() + 1];
for(int i = a.length()-1; i>=0; i--)
stringbuffer res = new stringbuffer();
for(int i = 0; i
如果是小數的話,有兩種思路:
補全長度的時候,需要兩邊都補全,小數點左邊的在左邊補全0,小數點右邊在右邊補全0,然後標記小數點所在的位置,剔除小數點,計算完成後,再在固定位置加入小數點即可。
分開計算:先計算小數點右邊的小數部分,計算時需要右邊補全;然後計算小數點左邊部分,計算時需要左邊補全,當右邊計算結果大於1的時候,需要左邊按照3個字串計算。
用字串模擬兩個大數相加 java實現
問題 大數相加不能直接使用基本的int型別,因為int可以表示的整數有限,不能滿足大數的要求。可以使用字串來表示大數,模擬大數相加的過程。思路 1.反轉兩個字串,便於從低位到高位相加和最高位的進製導致和的位數增加 2.對齊兩個字串,即短字串的高位用 0 補齊,便於後面的相加 3.把兩個正整數相加,一...
JAVA實現兩個大數相加
主要的思想是 把兩個數存在string中了,然後將每個數字取出,放到陣列,由最末位開始計算,算加法,判斷是否進製,進製則前位 1,若超過長度,則copy到新的陣列。如下 public class bigintadd else for int i 0 i arraytwo.length i else ...
兩個大整數相加 Java實現
本文分析和實現了兩個大整數相加的思路和做法 1.首先,由於計算機表示的整數範圍有限,當加數的位數超過計算機所能表示的範圍時就需要用到這裡的演算法。由於整數過大,不能一次完成相加,我們猜想能否將兩個整數儲存到陣列中,然後逐位相加。當然,這裡實現的方法就是基於此。如下 public class bigi...