多くの算術演算関数はMathクラスに共有メソッドとして存在します。 ここではその使い方を見ていきます。

Sponsored Link

絶対値・符号

絶対値を取得するには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

これらのメソッドにおいて、

  • Ceiling()は「指定された数以上の数のうち、最小の整数」
  • Floor()は「指定された数以下の数のうち、最大の整数」
  • Round()は「指定した値に最も近い整数」

を返します。 ただ、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

対数・eの累乗

対数を取るには、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

このほかにも双曲線関数を使用することもできます。