C 高精度加法運算(a a b)

2021-09-09 07:05:13 字數 1036 閱讀 2424

一、為什麼要高精度計算

利用計算機進行數值計算,有時計算要求精度高,希望計算的數的位數達到上百或者上千,甚至更多。但是由於計算機硬體問題,往往達不到實際問題所要求的精度。

二、思路:

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...