22

让我们有以下代码

(float)Math.Log(3.83031869)

我得到的输出是

1.342948

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

 1.93746

请问有什么插图吗?提前致谢。

4

5 回答 5

64

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

Math.Log(num, base)可能是您正在寻找的。

于 2012-11-30T23:11:34.110 回答
7

仅使用单个参数调用 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
于 2012-11-30T23:18:16.453 回答
6

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

Math.Log函数使用 base 计算对数e

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

于 2012-11-30T23:11:23.053 回答
3

对于整数值:

    public static int Log2(UInt64 value) {
        int i;
        for (i = -1; value != 0; i++)
            value >>= 1;

        return (i == -1) ? 0 : i;
    }
于 2018-06-06T10:34:53.607 回答
0

C#有一个函数可以为你计算以2为底的log,看下面的代码:

整数;

双 logBase2 = Math.Log2(number);

如果要将数字四舍五入为 2 或 3 或逗号后的任何数字,可以使用以下代码:

double logBase2 = Math.Round(Math.Log2(number), 2);//逗号后2位

于 2021-02-20T12:21:27.137 回答