让我们有以下代码
(float)Math.Log(3.83031869)
我得到的输出是
1.342948
但是当我使用许多在线计算器计算相同数字的 Log2 时,我得到了
1.93746
请问有什么插图吗?提前致谢。
Math.Log(num)
返回基数 e 的对数
Math.Log(num, base)
可能是您正在寻找的。
仅使用单个参数调用 Log 方法时,您将获得 Log 基数 e。如果你提供 2.0 的第二个参数,你会得到你期望的结果:
//Testing in LinqPad
void Main()
{
Math.Log(3.83031869).Dump();
Math.Log(3.83031869, 2.0).Dump();
}
结果
1.34294800860817
1.93746443219072
可以在 MSDN http://msdn.microsoft.com/en-us/library/x80ywz41.aspx中看到
该Math.Log
函数使用 base 计算对数e
。
请参阅http://msdn.microsoft.com/en-us/library/hd50b6h5.aspx了解您的需要。
对于整数值:
public static int Log2(UInt64 value) {
int i;
for (i = -1; value != 0; i++)
value >>= 1;
return (i == -1) ? 0 : i;
}
C#有一个函数可以为你计算以2为底的log,看下面的代码:
整数;
双 logBase2 = Math.Log2(number);
如果要将数字四舍五入为 2 或 3 或逗号后的任何数字,可以使用以下代码:
double logBase2 = Math.Round(Math.Log2(number), 2);//逗号后2位