引言
我们知道,对数函数 ln(x) 可以展开为泰勒级数:
![]() |
![]() |
但是下面这个泰勒级数展开式收敛得更快:
![]() |
![]() |
经过简单计算可知上式中 y = (x - 1) / (x + 1) 。
实现该算法的 C# 程序
根据上面的第二个泰勒级数展开式,我们可以为 C# 的 decimal 数据类型实现如下的 Log 扩展方法:
1 using System; 2 3 namespace Skyiv.Extensions 4 { 5 static class DecimalExtensions 6 { 7 static readonly decimal ln10 = 2.3025850929940456840179914547m; 8 static readonly decimal lnr = 0.2002433314278771112016301167m; 9 10 public static decimal Log10(this decimal x) 11 { 12 return Log(x) / ln10; 13 } 14 15 public