言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

C#辞典

  1. トップページ
  2. C#辞典
  3. Math.Max() / Math.Min() / Math.Pow() / Math.Sqrt()

Math.Max() / Math.Min() / Math.Pow() / Math.Sqrt()

対応: C# 1.0(2002)

2つの値の大きい方を返す『Math.Max()』、小さい方を返す『Math.Min()』、累乗を計算する『Math.Pow()』、平方根を返す『Math.Sqrt()』の使い方です。

構文

using System;

// val1 と val2 のうち大きい方を返します。
Math.Max(T val1, T val2)

// val1 と val2 のうち小さい方を返します。
Math.Min(T val1, T val2)

// x の y 乗を返します。戻り値は double 型です。
Math.Pow(double x, double y)

// d の平方根を返します。戻り値は double 型です。
Math.Sqrt(double d)

// x の自然対数を返します。
Math.Log(double x)

// 指定した底 newBase に対する x の対数を返します。
Math.Log(double x, double newBase)

メソッド一覧

メソッド概要
Math.Max(val1, val2)val1 と val2 のうち大きい方の値を返します。int, double, decimal など各数値型のオーバーロードがあります。
Math.Min(val1, val2)val1 と val2 のうち小さい方の値を返します。
Math.Pow(x, y)x の y 乗(x^y)を返します。戻り値は常に double 型です。
Math.Sqrt(d)d の平方根を返します。d が負の場合は NaN を返します。
Math.Log(x)x の自然対数(底 e)を返します。
Math.Log(x, newBase)x の newBase を底とする対数を返します。
Math.Log10(x)x の常用対数(底 10)を返します。

サンプルコード

Program.cs
using System;

// Math.Max() — 2 つの値のうち大きい方を取得します。
Console.WriteLine(Math.Max(10, 20)); // 20
Console.WriteLine(Math.Max(-5, -3)); // -3
Console.WriteLine(Math.Max(3.7, 3.2)); // 3.7

// Math.Min() — 2 つの値のうち小さい方を取得します。
Console.WriteLine(Math.Min(10, 20)); // 10
Console.WriteLine(Math.Min(-5, -3)); // -5

// Math.Pow() — 累乗を計算します。
Console.WriteLine(Math.Pow(2, 10)); // 1024(2 の 10 乗)
Console.WriteLine(Math.Pow(3, 3)); // 27(3 の 3 乗)
Console.WriteLine(Math.Pow(9, 0.5)); // 3(9 の 0.5 乗 = 平方根)

// Math.Sqrt() — 平方根を計算します。
Console.WriteLine(Math.Sqrt(16)); // 4
Console.WriteLine(Math.Sqrt(2)); // 1.4142135623730951
Console.WriteLine(Math.Sqrt(-1)); // NaN(負の数の平方根は実数ではありません)

// Math.Log() — 対数を計算します。
Console.WriteLine(Math.Log(Math.E)); // 1(自然対数 log_e(e) = 1)
Console.WriteLine(Math.Log10(1000)); // 3(常用対数 log_10(1000) = 3)
Console.WriteLine(Math.Log(8, 2)); // 3(log_2(8) = 3)
dotnet run
20
-3
3.7
10
-5
1024
27
3
4
1.4142135623730951
NaN
1
3
3

サンプルコード: 実用例(複利計算)

累乗を使った実用例として、複利計算(元金 × (1 + 利率)^年数)を示します。

Compound.cs
using System;

double principal = 100000; // 元金
double rate = 0.03; // 年利 3%
int    years = 10; // 運用年数

double futureValue = principal * Math.Pow(1 + rate, years);
Console.WriteLine($"{years}年後の金額: {futureValue:F0} 円");

// 値域を制限する: スコアを 0〜100 の範囲に収める
int score = 115;
int clamped = Math.Max(0, Math.Min(100, score));
Console.WriteLine($"クランプ後: {clamped}");
dotnet run
10年後の金額: 134392 円
クランプ後: 100

よくあるミス

よくあるミス: Math.Sqrt() は負の数で NaN を返す(例外ではない)

Math.Sqrt() に負の値を渡すと、例外はスローされずに NaN(非数)が返されます。そのまま計算を続けると結果も NaN になり、バグの原因が見つけにくくなります。負の値を渡す可能性がある場合は呼び出し前に確認してください。

using System;

// NG: 負の数を渡すと NaN が返る(例外は投げない)
double result = Math.Sqrt(-4);
Console.WriteLine(result); // NaN
Console.WriteLine(result + 10); // NaN(NaN との演算は常に NaN)
Console.WriteLine(result == result); // False(NaN は自分自身と等しくない)

修正後は次の通りです。

using System;

// OK: 負の値を渡す前に確認する
double value = -4;
if (value >= 0)
{
    Console.WriteLine(Math.Sqrt(value));
}
else
{
    Console.WriteLine("負の数の平方根は実数ではありません。");
}
dotnet run
NaN
NaN
False
負の数の平方根は実数ではありません。

概要

『Math.Pow()』と『Math.Sqrt()』の戻り値は常に double 型です。整数型の変数に代入するには明示的なキャストが必要です。『Math.Sqrt()』に負の値を渡すと例外ではなく NaN(非数)が返されるので注意してください。

『Math.Max()』と『Math.Min()』は 2 つの値しか比較できません。配列やリスト全体の最大・最小値を求めるには LINQ の Max() / Min() を使用してください。絶対値・丸め処理についてはMath.Abs() / Round() / Ceiling() / Floor()をご確認ください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。