Math.Pow计算不正确

Oli*_*s_j 10 c# pow

我遇到了C#的问题.准确地说Math.pow().如果我试着计算15 ^ 14那么我得到"29192926025390624".但如果我用Wolfram Alpha计算它,我会得到"29192926025390625".正如您所看到的,唯一的区别是1个数字.Wolfram Alpha是正确的.为什么不是C#?以及如何解决这个问题,以便在C#中获得正确的值?7

我的代码非常简单,因为我只是尝试使用硬编码的示例.所以我正在做的是:Math.Pow(15,14);这给了29192926025390624.而不是"29192926025390625"这是正确的答案.

链接:Wolfram Alpha

Hei*_*nzi 10

Math.Pow对浮点类型进行操作,根据定义,它们是不准确的.如果需要任意精度整数,请使用任意精度整数类型,例如BigInteger结构.BigInteger也有Pow方法.


Yur*_*ich 5

Math.Pow适用于双打。这个带有 long 的实现得到了正确的答案:

Func<long, int, long> power = null;
power = (i, p) => p == 1 ? i : i*power(i, p - 1);
Console.WriteLine(power(15, 14));
Run Code Online (Sandbox Code Playgroud)