0

在解决欧拉问题时,我遇到了这个..

BigInteger temp = (BigInteger)Math.Pow(99, 95); Console.WriteLine(temp.ToString());

它输出以下数字。 3848960788934848488282452569509484590776195611314554049114673132510910096787679715604422673797115451807631980373077374162416714994207463122539142978709403811688831410945323915071533162168320

但是,当我尝试使用此链接查找电源时,它显示..

3848960788934848611927795802824596789608451156087366034658627953530148126008534258032267383768627487094610968554286692697374726725853195657679460590239636893953692985541958490801973870359499

两个值是不同的我的问题是使用数学函数查找幂是否存在限制,或者从 double 到 BignInteger的转换是否错误?

4

1 回答 1

2

你必须使用BigInteger.Pow,而不是Math.Pow

使用Math.Pow,返回值是双精度浮点类型,其精度大致相当于 15-17 位有效十进制数字。因此,只有前 15-17 个数字是正确的。

于 2013-08-02T12:45:38.570 回答