2013-08-02 37 views
0

在解決歐拉的問題,我碰到這個..錯誤轉換double到BigInteger的

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

它輸出以下號碼。 3848960788934848488282452569509484590776195611314554049114673132510910096787679715604422673797115451807631980373077374162416714994207463122539142978709403811688831410945323915071533162168320

但是,當我試圖用這個link它顯示找到動力..

3848960788934848611927795802824596789608451156087366034658627953530148126008534258032267383768627487094610968554286692697374726725853195657679460590239636893953692985541958490801973870359499

兩個值是不同的。我的問題是有限制找功率使用數學功能或是轉換從雙重到BignInteger是錯誤的?

+2

由於雙精度而導致舍入問題 – AlexH

+0

@AlexH謝謝..使用BigInteger.Pow()解決了它。 – Naren

回答

1

您必須使用BigInteger.Pow而不是Math.Pow

使用Math.Pow,返回的值是一個雙精度浮點類型,其精度相當於大約15-17個十進制重要數字。因此只有前15-17個數字是正確的。

相關問題