计算日志库2

FSm*_*FSm 20 c# c#-4.0

我们有以下代码

(float)Math.Log(3.83031869)
Run Code Online (Sandbox Code Playgroud)

我得到的输出是

1.342948
Run Code Online (Sandbox Code Playgroud)

但是当我使用许多在线计算器计算出相同数量的Log2时,我得到了

 1.93746
Run Code Online (Sandbox Code Playgroud)

可以解释这个问题吗?提前致谢.

JG *_* SD 57

Math.Log(num) 返回基数e的日志

Math.Log(num, base) 可能就是你要找的东西.


Ita*_*aro 6

可以在MSDN中看到http://msdn.microsoft.com/en-us/library/x80ywz41.aspx

Math.Log函数使用base计算日志e.

请参阅http://msdn.microsoft.com/en-us/library/hd50b6h5.aspx以了解您的需求.


Chr*_*way 6

仅使用单个参数调用Log方法时,您将获得Log base e.如果你提供2.0的第二个参数,你会得到你期望的结果:

//Testing in LinqPad
void Main()
{
    Math.Log(3.83031869).Dump();
    Math.Log(3.83031869, 2.0).Dump();
}
Run Code Online (Sandbox Code Playgroud)

结果

1.34294800860817
1.93746443219072
Run Code Online (Sandbox Code Playgroud)

  • 什么输入导致了这个结果?根据文档,当输入为 0 且基数大于 1 或输入为 + 无穷大且基数介于 0 和 1 之间时,就会发生这种情况。 (2认同)