c++高精度計算(加法)

本文提供給剛入坑的新手ios

關於高精度的計算網上百度一下能夠了解到許多數組

今天我分享的只是一些本身的心得,更詳細的能夠去看原博主的原創文章(https://blog.csdn.net/fanyun_01/article/details/79967170),在閱讀完以後能夠來我這文章食用。spa

注意事項:.net

1.由於超出了普通儲存數據的範圍,因此經過以字符的形式輸入到數組當中。blog

2.儲存是將字符串從後往前儲存到數組當中的。ci

下面是源碼,我是在老樊Lu碼的原創源碼上加以修改的:字符串

  1. #include<iostream>源碼

  2. #include<cstring>string

  3. using namespace std;io

  4. int main()

  5. {

  6. string str1,str2; 

  7. int a[250],b[250],len; //數組的大小決定了計算的高精度最大位數 
  8. int i; 

  9. memset(a,0,sizeof(a)); 

  10. memset(b,0,sizeof(b)); 

  11. cin>>str1>>str2; //輸入兩個字符串 

  12. a[0]=str1.length(); //取得第一個字符串的長度 

  13. for(i=1;i<=a[0];i++) //把第一個字符串轉換爲整數,存放在數組a中 
  14. a[i]=str1[a[0]-i]-'0'; //將第一個字符串中數據倒着輸入到數組當中並用-'0'使其指向字符串中第一個字符 

  15. b[0]=str2.length(); //取得第二個字符串長度 

  16. for(i=1;i<=b[0];i++) //把第二個字符串中的每一位轉換爲整數,存放在數組B中 

  17. b[i]=str2[b[0]-i]-'0'; 

  18. len=(a[0]>b[0]?a[0]:b[0]); //取兩個字符串最大的長度 

  19. for(i=1;i<=len;i++) //作按位加法,同時處理進位 

  20. a[i]+=b[i]; 

  21. cout<<"這是第 "<<i<<" 的值,此時a[i]= " <<a[i]; //在循環裏面我決定使其更可視化,更能理解,因而加入了輸出語句 

  22. a[i+1]+=a[i]/10; 

  23. cout<<"這是第 "<<i+1<<" 的值,此時a[i]= " <<a[i+1]; 

  24. a[i]%=10; 

  25. cout<<"這是第 "<<i<<" 的值,此時a[i]= " <<a[i]<<"\n"; 

  26. len++; //下面是去掉最高位的0,而後輸出。 

  27. while((a[len]==0)&&(len>1)) len--; 

  28. for(i=len;i>=1;i--) 

  29. cout<<a[i]; 

  30. return 0; 

  31. }

以上就是源碼了雖然更改不大,可是我以爲加入輸出是對新手來講頗有必有的。

相關文章
相關標籤/搜索