C#學習筆記
以下是變數長度,以最長的 unsigned long long 型別來說可以計算 20 位數的資料,如果要計算(加、減、乘、除)超過這個位數
就會得到溢位的錯誤,傳統的解法是進行字串的運算,在.net famework 4.0 後有提供專門運算大位數的類別庫System.Numerics
以下用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: 就能輕輕鬆鬆的運算大位數。謝謝微軟工程師的努力~