我搜索了很长时间,几乎找不到任何信息。我在这个链接中找到了一些关于Math.Pow可能实现的信息,但它们是不准确的,例如这段代码
public static double PowerA(double a, double b)
{
int tmp = (int)(BitConverter.DoubleToInt64Bits(a) >> 32);
int tmp2 = (int)(b * (tmp - 1072632447) + 1072632447);
return BitConverter.Int64BitsToDouble(((long)tmp2) << 32);
}
static void Main(string[] args)
{
double x = 12.53, y = 16.45;
Console.WriteLine(Math.Pow(x, y));
Console.WriteLine(PowerA(x, y));
}
提供输出:
1,15158266266297E+18
8,9966384455562E+17
很不精确...
我认为它的工作方式类似于一系列的总和,但我并不确定。
Math.Pow
,它是错误的,他正在寻找一个能够正确模拟Math.Pow
的实现。 - Servy