首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

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

日期:2018年 09月 21日

標籤: C# Asp.NET Framework Windows Forms BigInteger

摘要:C# 學習筆記


使用程式:Visual Studio 2018 Windows From C#
原因:每個變數都是有最大長度,當超過後就會得到溢位的錯誤,傳統的解法是進行字串的運算,在.net famework 4.0 後有提供專門運算大位數的類別庫System.Numerics


目的:本篇介紹如何計算超大數值時的函式庫 - System.Numerics ,BigInteger


範例檔案下載:下載



STEP 1: .Net的變數長度(位元組)比較

類型名稱 位元組 其他名稱 值的範圍
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


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



STEP 3: 請選擇加入參考


STEP 4: 將System.Numerics加入


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

/// <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();
}


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