C#?Math中常用數(shù)學(xué)運(yùn)算的示例詳解
零、動(dòng)態(tài)庫(kù) System.Math.dll
引入動(dòng)態(tài)庫(kù) using System.Math;
Math 為通用數(shù)學(xué)函數(shù)、對(duì)數(shù)函數(shù)、三角函數(shù)等提供常數(shù)和靜態(tài)方法,使用起來(lái)非常方便,下邊簡(jiǎn)單列一下常用的幾種。
一、舍棄小數(shù)位處理
1. 四舍五入 Math.Round()
Math.Round(74.5, MidpointRounding.AwayFromZero) = 75; // 保留到個(gè)位 Math.Round(-74.5, MidpointRounding.AwayFromZero) = -75; // 目標(biāo)值為負(fù)數(shù)時(shí),四舍五入和正整數(shù)相同
單純使用 Math.Round(4.5) 得出的值為 4,因?yàn)?Round 默認(rèn)是采用 Banker's rounding(銀行家算法),即:四舍六入五取偶。事實(shí)上這也是 IEEE 的規(guī)范,因此所有符合 IEEE 標(biāo)準(zhǔn)的語(yǔ)言都應(yīng)該采用這樣的算法。
所謂取偶,就是看上一位:如果是偶數(shù),小數(shù)位為 5 就舍棄;若為奇數(shù),小數(shù)位為 5 就進(jìn) 1。因此,若寫(xiě)法:Math.Round(74.5)=74;
Math.Round(7.015, 2, MidpointRounding.AwayFromZero) = 7.02; // 保留多位小數(shù) Math.Round(-7.015, 2, MidpointRounding.AwayFromZero) = -7.02;
若需要保留多位小數(shù),也是同樣需要帶枚舉類型。
// Round 共有八個(gè)重載,輸出類型由輸入類型確定 Round(Decimal) Round(Double) Round(Decimal, Int32) Round(Decimal, MidpointRounding) Round(Double, Int32) Round(Double, MidpointRounding) Round(Decimal, Int32, MidpointRounding) Round(Double, Int32, MidpointRounding)
關(guān)于 MidpointRounding 官網(wǎng)鏈接。
2. 進(jìn)一法 Math.ceil() 和舍棄法 Math.Floor()
double[] values = { 7.03, 7.64, 0.12, -0.12, -7.1, -7.6 }; Console.WriteLine(" 輸入值 Ceiling 結(jié)果 Floor 結(jié)果\n"); foreach (double value in values) Console.WriteLine("{0,7} {1,16} {2,14}", value, Math.Ceiling(value), Math.Floor(value)); // 輸入值 Ceiling 結(jié)果 Floor 結(jié)果 // 7.03 8 7 // 7.64 8 7 // 0.12 1 0 // -0.12 -0 -1 // -7.1 -7 -8 // -7.6 -7 -8
二、取隨機(jī)數(shù) Random()
在新版的 C# 中,Random 類包含在命名空間 System 中,因此基本上隨時(shí)隨地都可以直接實(shí)例化并取用,十分方便。
下面用實(shí)例簡(jiǎn)單介紹下幾個(gè)重載的用法,更加詳細(xì)的用法推薦 Random 官方文檔 。
Random random = new Random(); // Random.Next() // 返回非負(fù)int型隨機(jī)數(shù) int randomvalue = random.Next(); // 0 <= 返回值 <2,147,483,647 的整數(shù) // Random.Next(Int) // 返回一個(gè)小于所指定最大值的非負(fù)隨機(jī)整數(shù) int randomvalue1 = random.Next(10); // 0 <= 返回值 < 10 的整數(shù) // Random.Next(Int,Int) // 返回一個(gè)指定范圍內(nèi)的隨機(jī)整數(shù)數(shù),例如(-100,0)返回負(fù)數(shù) int randomvalue2 = random.Next(10,20); // 10 <= 返回值 < 20 的整數(shù) int randomvalue2 = random.Next(-10,0); // -10 <= 返回值 < 0 的整數(shù) // Random.NextDouble() // 返回一個(gè)介于 0 到 1 之間的隨機(jī)數(shù) 0.70865696329095262 double randomvalue2 = random.NextDouble(); // 例如:0.70865696329095262、0.021905906508632892
三、絕對(duì)值 Math.Abs()
求絕對(duì)值的方法,只有僅一個(gè)參數(shù)的重載,即入?yún)⒉煌?,但出參和入?yún)㈩愋拖嗤?,很?jiǎn)單不再贅述。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.min()
較常用的寫(xiě)法就是比較兩個(gè)數(shù)字的大小。它們還支持比較多種類型,詳見(jiàn) Math.Max() 官網(wǎng) 。
Math.Max(0,1) = 1; Math.Min(0,1) = 0;
五、冪次方 Math.Pow() 與求平方根 Math.sqrt()
簡(jiǎn)單示例如下:
Math.Pow(2, 3) = 8; // 2 的 3 次方 Math.Sqrt(16) = 4; // 16 的平方根為 4,即 4*4 = 16
到此這篇關(guān)于C# Math中常用數(shù)學(xué)運(yùn)算的示例詳解的文章就介紹到這了,更多相關(guān)C# Math常用數(shù)學(xué)運(yùn)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#中獲取程序路徑的幾種方法及其區(qū)別說(shuō)明
這篇文章主要介紹了C#中獲取程序路徑的幾種方法及其區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07C#利用性能計(jì)數(shù)器監(jiān)控網(wǎng)絡(luò)狀態(tài)
這篇文章主要為大家詳細(xì)介紹了C#利用性能計(jì)數(shù)器監(jiān)控網(wǎng)絡(luò)狀態(tài)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01.Net6開(kāi)發(fā)winform程序使用依賴注入
本文詳細(xì)講解了.Net6開(kāi)發(fā)winform程序使用依賴注入的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12深入C#中使用SqlDbType.Xml類型參數(shù)的使用詳解
本篇文章是對(duì)在C#中使用SqlDbType.Xml類型參數(shù)的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C#使用AutoResetEvent實(shí)現(xiàn)同步
這篇文章主要為大家詳細(xì)介紹了C#使用AutoResetEvent實(shí)現(xiàn)同步的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03C#中使用強(qiáng)制類型實(shí)現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換
這篇文章主要介紹了C#中使用強(qiáng)制類型實(shí)現(xiàn)字符串和ASCII碼之間的轉(zhuǎn)換,本文還給出了另一種方法,需要的朋友可以參考下2014-08-08