基礎數值運算

Math 類別支援一般常見的數學運算,例如數值的比較,讀取絕對值等等。

Math 的Max 以及 Min 函式,提供了比較兩個特定數值大小所需的功能,同時包含數種基本型別的多載版本,以 int 型別為例,其定義如下:
public static int Max(int val1,int val2)
public static int Min(int val1,int val2)
Max 回傳 val1 與 val2 比較結果當中比較大的值, Min則是回傳其中比較小的值,例如 Math.Max(5,10) 回傳值為 10 ,Math.Min(5,10) 回傳值則是 5。

兩個函式提供各種數值型別的多載版本,這些版本分別接受不同型別的參數,進行比較運算,例如底下為 double 版本的 Max 定義:
public static double Max(
 double val1,
 double val2
)
由於每一種數值型別均有其相關定義,因此可以針對兩個特定型別的數值,進行比較運算。

近似值

Math 針對近似值的運算提供一組相關函式,其中大部份主要用於取得具小數點數值的近似整數,列舉如下:

方法說明
Ceiling回傳大於或是等於指定數值的最小整數。
Floor回傳小於或是等於指定數值的最大整數。
Round回傳與指定數值最接近的整數。

表列的三種方法,均用來取得相較於一個特定數值的近似值,從 Ceiling 開始,其定義如下:
public static decimal Ceiling (
 decimal d
)
Ceiling 回傳大於或是等於參數 d 的最小整數,假設傳入的參數 d 等於 1.5 ,Math.Ceiling(1.5) 的回傳值則為 2 ,若是負值,則其規則同樣適用, Math.Ceiling(-1.5) 回傳值為 -1 。

Floor 與 Ceiling 進行相反的運算,其定義如下:
public static decimal Floor(
 decimal d
)
Floor 回傳小於或是等於參數 d 的最大整數,假設傳入的參數 d 等於 1.5 , Math.Floor (1.5) 回傳值為 1 ,若是負值則其規則同樣適用, Math.Floor(-1.5) 回傳值為 -2 。

最後的Round 則是前兩者的綜合體,其定義如下:
public static decimal Round (
 decimal d
)
這個方法回傳值為最接近參數 d 的整數值,例如 Math.Round(1.4) 的回傳值為 1 ,Math.Round(1.6) 的回傳值則是 2 ,如果參數值剛好落在兩個整數中間,則回傳偶數值,例如 Math.Round(1.5) 回傳 2 , Math.Round(2.5) 也是回傳 2 。

Round還有另外一多載的版本,定義如下:
public static decimal Round (
 decimal d,
 int decimals
)
此版本接受兩個參數,其中第二個參數,代表所要取得近似值的小數點位數精確度,例如Math.Round(2.55655,4),表示取得 2.55655 這個數值的近似值,精確度至小數點後面四個位數,因此其回傳值將是 2.5566 ,第四個位數的進位規則同上述單一參數版本。

絕對值

Math 針對絕對值的運算同樣提供了必要的支援函式,同時包含了數種支援整數以及浮點數的版本,以下列出其中的 int 版本。
public static int Abs(
 int value
)
Abs() 函式回傳整數 value 的正整數,例如 Math.Abs(15) 以及 Math.Abs(-15) ,回傳值均為 15 ,除了整數,其他型別的版本亦相同,只是傳入的參數為特定型別。

除法運算

一個特殊的函式 IEEERemainder ,用來取得兩個數值相除之後所產生的餘數,定義如下:
public static double IEEERemainder (
 double x,
 double y
)
其中 x 為被除數, y 為除數,回傳值則是 x 與 y 進行除法運算之後的餘數,以Math.IEEERemainder(10,3) 為例,其回傳值為 10/3 的餘數 1 ,而無論除數或是被除數,甚至回傳值,均是 double 型別資料。

除了以上介紹的方法, Math 類別還有少數幾個這裏沒有提及的成員,其中甚至包含了三個雙曲函式,計算雙曲正切(Hyperbolic tangent)的 Tanh 、雙曲正弦(Hyperbolic sine)的 Sinh 以及雙曲餘弦(Hyperbolic cosine)的 Cosh,這些函式的運用對於讀者而言應該不困難,讀者有興趣可自行了解。



沒有留言: