【C#】n乗根の計算

n乗根の計算で、例えば8の3乗根( \(\sqrt [ 3 ]{ 8 } =2\) )を計算するにはMathクラスのPowメソッドを用いて

 

Math.Pow(8.0, 1.0 / 3.0);

 

と、すれば答え  が求められます。

しかし、負の値のn乗根、例えば \(\sqrt [ 3 ]{ -8 }\)、を求めようと

 

Math.Pow(-8.0, 1.0 / 3.0);

 

とすると、答えは -2 を期待するところですが、C#ではNaNとなり、答えが求まりません。

しかし、負の値であっても、奇数乗根の場合は答えを求めたい。

 

という事で、こんなメソッドを作ってみました↓

private double NthRoot(double x, int n) 
{ 
	if (x >= 0) 
	{ 
		// 通常のn乗根 
		return Math.Pow(x, 1.0 / (double)n); 
	} 
	else 
	{ 
		if ((n % 2) != 0) 
		{ 
			// 奇数乗根の場合 
			return -Math.Pow(-x, 1.0 / (double)n); 
		} 
		else 
		{ 
			// 偶数乗根の場合 
			return double.NaN; 
		} 
	} 
}

(参考)Math.Powメソッド

https://msdn.microsoft.com/ja-jp/library/system.math.pow(v=vs.110).aspx

 

C#へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください