多くの算術演算関数はMathクラスに共有メソッドとして存在します。 ここではその使い方を見ていきます。
絶対値を取得するにはAbs()メソッド、値の符号(正負)を取得するにはSign()メソッドを利用します。
' 絶対値 Console.WriteLine("Abs(-1) = {0}", Math.Abs(-1)) Console.WriteLine("Abs(3.14) = {0}", Math.Abs(3.14)) ' 符号 Console.WriteLine("Sign(-2) = {0}", Math.Sign(-2)) Console.WriteLine("Sign( 5) = {0}", Math.Sign(5))
Abs(-1) = 1 Abs(3.14) = 3.14 Sign(-2) = -1 Sign( 5) = 1
MathクラスのCeiling()、Floor()、Round()メソッドを使うことで浮動小数点値を整数に丸めることができます。
Dim value As Double Dim ceiling, floor, round As Double For value = -2.0 To 2.0 Step +0.25 ceiling = Math.Ceiling(value) floor = Math.Floor(value) round = Math.Round(value) Console.WriteLine("Value: {0:F2}, {1:F2} {2:F2} {3:F2}", value, ceiling, floor, round) Next
Value: -2.00, -2.00 -2.00 -2.00 Value: -1.75, -1.00 -2.00 -2.00 Value: -1.50, -1.00 -2.00 -2.00 Value: -1.25, -1.00 -2.00 -1.00 Value: -1.00, -1.00 -1.00 -1.00 Value: -0.75, 0.00 -1.00 -1.00 Value: -0.50, 0.00 -1.00 0.00 Value: -0.25, 0.00 -1.00 0.00 Value: 0.00, 0.00 0.00 0.00 Value: 0.25, 1.00 0.00 0.00 Value: 0.50, 1.00 0.00 0.00 Value: 0.75, 1.00 0.00 1.00 Value: 1.00, 1.00 1.00 1.00 Value: 1.25, 2.00 1.00 1.00 Value: 1.50, 2.00 1.00 2.00 Value: 1.75, 2.00 1.00 2.00 Value: 2.00, 2.00 2.00 2.00
これらのメソッドにおいて、
を返します。 ただ、Round()は単純に四捨五入ではないので注意が必要です。
Dim value As Double For value = 0.0 To 2.0 Step +0.1 Console.WriteLine("Value: {0:F2}, {1:F2}", value, Math.Round(value)) Next
Value: 0.00, 0.00 Value: 0.10, 0.00 Value: 0.20, 0.00 Value: 0.30, 0.00 Value: 0.40, 0.00 Value: 0.50, 0.00 Value: 0.60, 1.00 Value: 0.70, 1.00 Value: 0.80, 1.00 Value: 0.90, 1.00 Value: 1.00, 1.00 Value: 1.10, 1.00 Value: 1.20, 1.00 Value: 1.30, 1.00 Value: 1.40, 1.00 Value: 1.50, 2.00 Value: 1.60, 2.00 Value: 1.70, 2.00 Value: 1.80, 2.00 Value: 1.90, 2.00
Round()メソッドの挙動について、MSDNライブラリには「指定された値が 2 つの整数(一方の整数が偶数でもう一方が奇数)の中間にある場合は偶数が返されます」とあります。
累乗を計算するにはPow()メソッドを使用します。 また、平方根を求めるにはSqrt()メソッドを使用します。 ただ、VB.NETには^演算子が存在するので、これらのメソッドを使用しなくても累乗・平方根などを算出することができます。
Console.WriteLine(Math.Pow(2, 3)) Console.WriteLine(2 ^ 3) Console.WriteLine(Math.Pow(3, 2)) Console.WriteLine(3 ^ 2) Console.WriteLine(Math.Sqrt(2)) Console.WriteLine(2 ^ 0.5) Console.WriteLine(Math.Sqrt(144)) Console.WriteLine(144 ^ 0.5)
8 8 9 9 1.4142135623731 1.4142135623731 12 12
対数を取るには、Log10()メソッドないしLog()メソッドを使用します。 異なる底の対数を取るにはこれらを組み合わせて底の変換を行います。 ちなみに、Math.Eフィールドに自然対数の底eの値が格納されています。 また、Exp()メソッドを使用するとeの累乗を求めることができます。
Console.WriteLine(Math.Log10(2)) Console.WriteLine(Math.Log10(3)) Console.WriteLine(Math.Log(2.7182818)) Console.WriteLine(Math.E) Console.WriteLine(Math.Exp(1.0)) Console.WriteLine(Math.Exp(2.0))
0.301029995663981 0.477121254719662 0.999999989530502 2.71828182845905 2.71828182845905 7.38905609893065
三角関数は次のように使用します。 ちなみに、円周率πはMathクラスのフィールドとして存在するのでここから取得することができます。
Console.WriteLine("Sin(π/6) = {0}", Math.Sin(Math.PI / 6)) Console.WriteLine("Cos(π/4) = {0}", Math.Cos(Math.PI / 4)) Console.WriteLine("Tan(π/3) = {0}", Math.Tan(Math.PI / 3))
Sin(π/6) = 0.5 Cos(π/4) = 0.707106781186548 Tan(π/3) = 1.73205080756888
逆三角関数は次の通りです。
Console.WriteLine("Asin(0.5) = {0}", Math.Asin(0.5)) Console.WriteLine("Acos(0.7071) = {0}", Math.Acos(0.7071)) Console.WriteLine("Atan(1.0) = {0}", Math.Atan(1.0))
出力結果
Asin(0.5) = 0.523598775598299 Acos(0.7071) = 0.785407753397449 Atan(1.0) = 0.785398163397448
このほかにも双曲線関数を使用することもできます。