0027 計算大位數的類別庫 System.Numerics ,BigInteger類別

C#學習筆記

 

以下是變數長度,以最長的 unsigned long long 型別來說可以計算 20 位數的資料,如果要計算(加、減、乘、除)超過這個位數

就會得到溢位的錯誤,傳統的解法是進行字串的運算,在.net famework 4.0 後有提供專門運算大位數的類別庫System.Numerics 

點我可以下載本範例程式碼(Visual 2015)

以下用Windows Form 程式說明

類型名稱 位元組 其他名稱 值的範圍
int 4 signed –2,147,483,648 到 2,147,483,647
unsigned int 4 unsigned 0 到 4,294,967,295
__int8 1 char –128 到 127
unsigned __int8 1 unsigned char 0 到 255
__int16 2 short、short int、signed short int –32,768 到 32,767
unsigned __int16 2 unsigned short、unsigned short int 0 到 65,535
__int32 4 signed、signed int、int –2,147,483,648 到 2,147,483,647
unsigned __int32 4 unsigned、unsigned int 0 到 4,294,967,295
__int64 8 long long、signed long long –9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned __int64 8 unsigned long long 0 到 18,446,744,073,709,551,615

 

Step1 :  這是Winform的程式 有40位的計算 ,正常計算必定溢位

Step2 : 請選擇加入參考

Step3 : 將System.Numerics加入

Step4: 以加法為例(+, - , * , / 其實只是換符號,精隨是轉型),程式碼說明如下

/// <summary>
/// 計算加法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button_Add_Click(object sender, EventArgs e)
{
  //建立BigInteger類別
  System.Numerics.BigInteger Result = new System.Numerics.BigInteger();
  //將string 轉成 BigInteger 進行加法運算
  Result = System.Numerics.BigInteger.Parse(textBox_add_1.Text) + System.Numerics.BigInteger.Parse(textBox_add_2.Text);
  //將BigInteger轉回string回傳到前端
  textBox_add_result.Text = Result.ToString();
}

 

Step5: 就能輕輕鬆鬆的運算大位數。謝謝微軟工程師的努力~