在解决欧拉的问题时,我遇到了这个......
BigInteger temp = (BigInteger)Math.Pow(99, 95);
Console.WriteLine(temp.ToString());
输出以下数字。
3848960788934848488282452569509484590776195611314554049114673132510910096787679715604422673797115451807631980373077374162416714994207463122539142978709403811688831410945323915071533162168320
但是当我尝试使用此link找到电源时,它会显示..
3848960788934848611927795802824596789608451156087366034658627953530148126008534258032267383768627487094610968554286692697374726725853195657679460590239636893953692985541958490801973870359499
两个值不同。我的问题是,使用数学函数查找权限时有限制,或者转换从double到BignInteger是错误的吗?
答案 0 :(得分:1)
您必须使用BigInteger.Pow
,而不是Math.Pow
。
使用Math.Pow
,返回的值是双精度浮点类型,其精度相当于大约15-17个有效小数。因此,只有前15-17个数字是正确的。