一、為什麼要高精度計算
利用計算機進行數值計算,有時計算要求精度高,希望計算的數的位數達到上百或者上千,甚至更多。但是由於計算機硬體問題,往往達不到實際問題所要求的精度。
二、思路:
1.考慮如何接收輸入的大整數
用string(字串)操作
2.如何儲存大整數
(1)用整型陣列,每個單元儲存乙個數字的數字。
(2)因為考慮到進製和借位的問題,所以存進陣列中的數字,須是從低位往高位儲存,根據數字和ascii之間的關係,
逆轉數字串。
3.進行加法運算(先不考慮負整數相加)
陣列a和陣列b儲存兩個加數,從低位開始相加,相加大於10的,用求餘%,並向高位進製。
三、實現程式:
// 實現:a = a + b; a,b均為高精度數
// 採用整數陣列存放
// 測試資料:33333333333333333333 55555555555555555555
// 9876543210 876543210
#include #include using namespace std; // 使用using編譯指令
const int max = 5000;
// 將兩個高精度數相加: a = a + b;
int toplus(int a, int b, int la, int lb);
int main(int argc, const char * ar**)
return 0;
}// 將兩個高精度數相加 a = a + b;
int toplus(int a, int b, int la, int lb)
}if(a[len] != 0) // 最高位有進製
len++;
return len; // 返回得到的和的長度
}
測試結果:
C 高精度減法運算(a a b)
一 題目 求兩個大的正整數相減的差。二 思路 1.接收輸入的兩個大整數的數字串 用string接收兩個正整數的數字串 c用字元陣列或字元指標 2.比較兩個正整數哪個大?1 比較兩個大整數的數字串長度 2 如果長度相等,可用strcmp函式比較兩個數字串,標頭檔案為 include 如果是第乙個數大於...
高精度運算(大數加法)
在計算過大的數字時,我們可以使用字串進行儲存,再模擬計算過程,結果也用字串儲存,最後輸出這個字串 加法 include include include includeusing namespace std int main l1 l2 int g 0 while l2 0 while l1 0 if...
高精度運算 加法 減法
高精度算是我高中期間沒有學明白的知識點之一,其實挺簡單的東西。核心思路是 按位模擬豎式運算 說白了就是模擬題。加法減法從低位到高位模擬,因為會進製借位 乘法也從低到高因為進製 除法要從高到低因為我們手算除法時也是從高到低保留餘數的。高精度減法 1 include2 using namespace s...