C#中Math.Log返回值与计算器结果不符的原因咨询
为什么C#的Math.Log结果和计算器不一致?
你碰到的这个问题其实是个很常见的「底数误解」问题,我来给你拆解清楚:
- C#里的
Math.Log(double)方法,默认计算的是自然对数(底数为e,也就是数学里的ln)。你代码里的Math.Log(0.137931034482758)得到的-1.981,正是这个数的自然对数值,是完全正确的。 - 而我们日常用的计算器,默认的「log」按钮通常指的是常用对数(底数为10),也就是log₁₀,所以你用计算器得到的-0.860是这个数的常用对数值,同样是正确的。
想要在C#里得到和计算器一致的结果,有两种简单的解决办法:
- 直接使用专门的常用对数方法:
Math.Log10(0.137931034482758),这个方法会直接返回底数为10的对数值,结果就是你期望的-0.86033800657099左右。 - 用对数换底公式手动计算:
Math.Log(0.137931034482758) / Math.Log(10),因为log₁₀(x) = ln(x)/ln(10),这样算出来的结果和上面的方法完全一致。
另外补充个小知识点:如果之后需要计算其他底数的对数(比如底数2),也可以用换底公式,或者C# 4.0及以上版本里的Math.Log2(double)方法来直接计算。
内容的提问来源于stack exchange,提问作者Miç Miç
相关产品推荐
相关产品推荐

