引入動態庫 using System.Math;
Math 為通用數學函數、對數函數、三角函數等提供常數和靜態方法,使用起來非常方便,下邊簡單列一下常用的幾種。
Math.Round(74.5, MidpointRounding.AwayFromZero) = 75; // 保留到個位
Math.Round(-74.5, MidpointRounding.AwayFromZero) = -75; // 目標值為負數時,四捨五入和正整數相同
單純使用 Math.Round(4.5) 得出的值為 4,因為 Round 預設是採用 Banker's rounding(銀行家演演算法),即:四捨六入五取偶。事實上這也是 IEEE 的規範,因此所有符合 IEEE 標準的語言都應該採用這樣的演演算法。
所謂取偶,就是看上一位:如果是偶數,小數位為 5 就捨棄;若為奇數,小數位為 5 就進 1。因此,若寫法:Math.Round(74.5)=74
;
Math.Round(7.015, 2, MidpointRounding.AwayFromZero) = 7.02; // 保留多位小數
Math.Round(-7.015, 2, MidpointRounding.AwayFromZero) = -7.02;
若需要保留多位小數,也是同樣需要帶列舉型別。
// Round 共有八個過載,輸出型別由輸入型別確定
Round(Decimal)
Round(Double)
Round(Decimal, Int32)
Round(Decimal, MidpointRounding)
Round(Double, Int32)
Round(Double, MidpointRounding)
Round(Decimal, Int32, MidpointRounding)
Round(Double, Int32, MidpointRounding)
double[] values = { 7.03, 7.64, 0.12, -0.12, -7.1, -7.6 };
Console.WriteLine(" 輸入值 Ceiling 結果 Floor 結果\n");
foreach (double value in values)
Console.WriteLine("{0,7} {1,16} {2,14}", value, Math.Ceiling(value), Math.Floor(value));
// 輸入值 Ceiling 結果 Floor 結果
// 7.03 8 7
// 7.64 8 7
// 0.12 1 0
// -0.12 -0 -1
// -7.1 -7 -8
// -7.6 -7 -8
在新版的 C# 中,Random 類包含在名稱空間 System 中,因此基本上隨時隨地都可以直接範例化並取用,十分方便。
下面用範例簡單介紹下幾個過載的用法,更加詳細的用法推薦 Random 官方檔案 。
Random random = new Random();
// Random.Next() // 返回非負int型亂數
int randomvalue = random.Next(); // 0 <= 返回值 <2,147,483,647 的整數
// Random.Next(Int) // 返回一個小於所指定最大值的非負隨機整數
int randomvalue1 = random.Next(10); // 0 <= 返回值 < 10 的整數
// Random.Next(Int,Int) // 返回一個指定範圍內的隨機整數數,例如(-100,0)返回負數
int randomvalue2 = random.Next(10,20); // 10 <= 返回值 < 20 的整數
int randomvalue2 = random.Next(-10,0); // -10 <= 返回值 < 0 的整數
// Random.NextDouble() // 返回一個介於 0 到 1 之間的亂數 0.70865696329095262
double randomvalue2 = random.NextDouble(); // 例如:0.70865696329095262、0.021905906508632892
求絕對值的方法,只有僅一個引數的過載,即入參不同,但出參和入參型別相同,很簡單不再贅述。Math.Abs() 官方檔案
decimal[] decimals = { Decimal.MaxValue, 12.45M, 0M, -19.69M,
Decimal.MinValue };
foreach (decimal value in decimals)
Console.WriteLine($"Abs({value}) = {Math.Abs(value)}");
//Abs(79228162514264337593543950335) = 79228162514264337593543950335
//Abs(12.45) = 12.45
//Abs(0) = 0
//Abs(-19.69) = 19.69
//Abs(-79228162514264337593543950335) = 79228162514264337593543950335
較常用的寫法就是比較兩個數位的大小。它們還支援比較多種型別,詳見 Math.Max() 官網 。
Math.Max(0,1) = 1;
Math.Min(0,1) = 0;
簡單範例如下:
Math.Pow(2, 3) = 8; // 2 的 3 次方
Math.Sqrt(16) = 4; // 16 的平方根為 4,即 4*4 = 16
其他功能詳見官方檔案:Math
注:簡單總結,歡迎補充和指正。