在解决欧拉问题时,我碰到了这一点。
BigInteger temp = (BigInteger)Math.Pow(99, 95); Console.WriteLine(temp.ToString());
它输出以下数字。 3848960788934848488282452569509484590776195611314554049114673132510910096787679715604422673797115451807631980373077374162416714994207463122539142978709403811688831410945323915071533162168320
但是,当我尝试使用此链接查找电源时,它显示了..
3848960788934848611927795802824596789608451156087366034658627953530148126008534258032267383768627487094610968554286692697374726725853195657679460590239636893953692985541958490801973870359499
这两个值是不同的。我的问题是使用数学函数查找幂有一个限制,还是从double到BignInteger的转换是错误的?
您必须使用BigInteger.Pow
,而不是Math.Pow
。
使用Math.Pow
,返回值是双精度浮点类型,其精度大约等于15-17个有效十进制数字。因此,只有前15-17个数字是正确的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句