2014-10-31 68 views
0

我正在寫一個接受ints作爲參數的BigInteger類型的對象接口。迄今爲止,這一切都很順利,只有一個例外令我擔憂。從BigInteger轉換爲int是否安全?我知道可以向相反的方向前進,但是如果我嘗試向下轉換的BigInt大於int範圍,似乎可能會出現嚴重問題。但是,我需要在我的界面中構建一些功能來實現這一點。這裏的智慧是什麼?我應該如何繼續?從BigInteger轉換爲int是明智嗎?

+0

如何接受ints作爲參數來創建biginteger意味着您將bigintegers轉換爲整數? – 2014-10-31 01:17:06

+0

有問題的方法在兩個BigInteger對象之間執行添加。它返回一個新構造的對象BigInteger BigInt(int numerator,int common_denominator)。 (int,int)的條件回到最後調用構造函數時遇到問題。我很抱歉,如果這種格式的我都搞砸了,順便說一句。這實際上是我在這個網站上發佈的第一個問題。 – 2014-10-31 01:26:28

回答

1

將BigInteger轉換爲int絕對不安全,因爲您容易受到overflow的影響。

爲了解決這個問題,你就必須放在一個條件,即可以確保你不會轉換爲整數的範圍之外BigIntegers,那就是:

Integer.MAX_VALUE = 2147483647 
Integer.MIN_VALUE = -2147483648 

你可以考慮,如果長時間儘管如此,足以讓你使用。它具有明顯更寬的範圍:

Long.MAX_VALUE = 9223372036854775807 
Long.MIN_VALUE = -9223372036854775808 
0

你想要的方法是BigInteger#valueOf(long val)。

例如,

BigInteger bi = BigInteger.valueOf(myInteger.intValue()); 

製作一個第一字符串是不必要的和不希望的。

+0

很棒的建議,謝謝。 – 2014-10-31 01:28:04