我正在寫一個接受ints作爲參數的BigInteger類型的對象接口。迄今爲止,這一切都很順利,只有一個例外令我擔憂。從BigInteger轉換爲int是否安全?我知道可以向相反的方向前進,但是如果我嘗試向下轉換的BigInt大於int範圍,似乎可能會出現嚴重問題。但是,我需要在我的界面中構建一些功能來實現這一點。這裏的智慧是什麼?我應該如何繼續?從BigInteger轉換爲int是明智嗎?
0
A
回答
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
相關問題
- 1. 從Integer轉換爲BigInteger
- 2. 將整個程序從Int轉換爲BigInteger
- 3. 從int *轉換爲int&
- 4. 從int []轉換爲int *
- 5. 從null轉換爲int可能嗎?
- 6. 從BigInteger轉換爲八位字節?
- 7. 將BigInteger轉換爲密鑰
- 8. MATLAB Cell2Mat轉換行明智
- 9. 不兼容的類型:BigInteger不能轉換爲int
- 10. 從.NET轉移到Java EE或RoR是明智的決定嗎?
- 11. Lua:從float轉換爲int
- 12. 從wchar_t轉換爲int
- 13. 從int轉換爲double
- 14. 從'uint64_t'轉換爲'unsigned int'
- 15. 從int轉換爲long long
- 16. 從char *轉換爲int
- 17. 從VARCHAR轉換值爲int
- 18. OpenCL:從'int *'轉換爲'__generic int * __ generic *'
- 19. 無法從int [] []轉換爲int **?
- 20. #[錯誤]從'int *'無效轉換爲'int'
- 21. 從const int轉換爲C++中的int
- 22. 無法從int [] []轉換爲int *
- 23. 從Gen(Maybe Int)轉換爲Maybe Int
- 24. avro 1.8.1 BigInteger轉換
- 25. MySQL - 明智嗎?
- 26. C++轉換錯誤:從短int *無效轉換爲short int
- 27. 我可以將Positive,Nat轉換爲int32,Z轉換爲int嗎?
- 28. 將3個字節轉換爲int嗎?
- 29. SQL將real轉換爲INT,可以嗎?
- 30. 從float32轉換爲int轉到
如何接受ints作爲參數來創建biginteger意味着您將bigintegers轉換爲整數? – 2014-10-31 01:17:06
有問題的方法在兩個BigInteger對象之間執行添加。它返回一個新構造的對象BigInteger BigInt(int numerator,int common_denominator)。 (int,int)的條件回到最後調用構造函數時遇到問題。我很抱歉,如果這種格式的我都搞砸了,順便說一句。這實際上是我在這個網站上發佈的第一個問題。 – 2014-10-31 01:26:28