2014-02-06 59 views
0

所以我試圖用Newton-Raphson方法來查找BigInteger的平方根。如何使用Newton-Raphson方法在C中查找BigInteger的平方根#

這裏是我的代碼:

  private void sqrRt(BigInteger candidate) 
      { 
       BigInteger epsilon = new BigInteger(0.0001); 
       BigInteger guess = candidate/2; 

       while (BigInteger.Abs(guess * guess - candidate) >= epsilon) 
       { 
        // guess = guess - (((guess**2) - y)/(2*guess)) 
        guess = BigInteger.Subtract(guess, BigInteger.Divide(BigInteger.Subtract(BigInteger.Multiply(guess, guess), candidate), BigInteger.Multiply(2, guess))); 
        MessageBox.Show(Convert.ToString(guess)); 
       } 
      } 

這個問題似乎是該BigInteger的不夠精確墜入while循環的小量的準確度之內 - 即它需要一個小數位。我的問題是什麼/如何/我在哪裏轉換爲雙重使while循環最終返回false?

+1

ummm'BigInteger'用於整數,而不是浮點數學。 –

+0

[計算BigInteger(System.Numerics.BigInteger)的平方根]可能的重複(http://stackoverflow.com/questions/3432412/calculate-square-root-of-a-biginteger-system-numerics-biginteger) – AlexH

+0

那麼如何在非常大的數字上進行浮點數學呢? – Gerald

回答

1

您正在使用錯誤的數據類型。爲了有小數點,您需要使用double,float,decimalComplex

檢查所有這些類型的鏈接,以便您可以看到他們的精度數字。