対数を求めるにはLogメソッドを使用します。 このメソッドは任意の底を指定することもできます。 logaxを求めるには、Math.Log(x, a)として呼び出します。 底を指定しない場合は、ネイピア数eを底とした自然対数lnとなります。 また、底を10とした常用対数log10xを求めるにはLog10メソッドを使用することができます。 これらのメソッドは、いずれも引数・戻り値ともにDoubleです。
Math.Logメソッド・Math.Log10メソッドを使って自然対数・常用対数・任意の底の対数を求める
using System;
class Sample {
static void Main()
{
// 自然対数ln
Console.WriteLine("ln(2.7182818) = {0}", Math.Log(2.7182818)); // eを底とした自然対数
Console.WriteLine("log_e(2.7182818) = {0}", Math.Log(2.7182818, Math.E)); // 上と同等
Console.WriteLine();
// 常用対数log10
Console.WriteLine("log_10(2) = {0}", Math.Log10(2)); // 10を底とした常用対数
Console.WriteLine("log_10(100) = {0}", Math.Log(100, 10)); // 上と同等
Console.WriteLine();
// 底を2とした対数
Console.WriteLine("log_2(2) = {0}", Math.Log(2, 2));
Console.WriteLine("log_2(4) = {0}", Math.Log(4, 2));
Console.WriteLine();
}
}
実行結果
ln(2.7182818) = 0.999999989530502 log_e(2.7182818) = 0.999999989530502 log_10(2) = 0.301029995663981 log_10(100) = 2 log_2(2) = 1 log_2(4) = 2
Math.Log10メソッドを使うことで10進数数値の桁数を求めることができます。 Math.Log10メソッドやその他の手法で数の桁数を求める方法を数の桁数を求めるで解説しています。
2進対数(⌊log2n⌋・⌊lb n⌋)を求めたい場合、BitOperations.Log2メソッドを使うこともできます。