मैं जावा 7 x64 में BigIntegers से संबंधित निम्न समस्या का पता लगाने की कोशिश कर रहा हूं। मैं एक संख्या को अत्यधिक उच्च शक्ति की गणना करने का प्रयास कर रहा हूं। समस्या के विवरण के बाद कोड नीचे है।प्रिंटिंग बहुत बड़े BigIntegers
import java.math.BigInteger;
public class main {
public static void main(String[] args) {
// Demo calculation; Desired calculation: BigInteger("4096").pow(800*600)
BigInteger images = new BigInteger("2").pow(15544);
System.out.println(
"The number of possible 16 bpc color 800x600 images is: "
+ images.toString());
}
}
मुझे इस ऑपरेशन के परिणाम प्रिंट करने में समस्याएं आ रही हैं। जब यह कोड निष्पादित करता है तो यह संदेश प्रिंट करता है लेकिन images.toString()
का मान नहीं।
समस्या को अलग करने के लिए मैंने उस पंक्ति पर टिप्पणी में सूचीबद्ध वांछित गणना के बजाय दो की शक्तियों की गणना करना शुरू किया। दो प्रणालियों पर मैंने इसका परीक्षण किया है, 2^15544
सबसे छोटी गणना है जो समस्या को ट्रिगर करती है; 2^15543
ठीक काम करता है।
मुझे पता नहीं है, जहां मेजबान सिस्टम पर स्मृति सीमा तक पहुंच गए के करीब हूं और मैं नहीं मानता कि मैं भी वीएम सीमा के करीब हूँ (किसी भी वीएम तर्क -Xmx1024M
-Xms1024M
के साथ चल दर पर कोई प्रभाव नहीं है)।
जवाब मुझे लगता है कि मैं या तो BigInteger
या String
एक सरणी (Integer.MAX_VALUE
) कि उन प्रकार आंतरिक डेटा भंडारण के लिए उपयोग का अधिकतम आकार से संबंधित में एक सीमा तक पहुंच गए हूँ आ गए हैं की तलाश में इंटरनेट के आसपास poking के बाद। यदि समस्या String
में है, तो मुझे लगता है कि BigInteger
का विस्तार करना संभव होगा और एक प्रिंट विधि लिखें जो एक समय में कुछ वर्णों को बाहर निकाल दे, जब तक कि पूरे BigInteger
मुद्रित न हो जाएं, लेकिन मुझे संदेह है कि समस्या कहीं और है।
मेरे प्रश्न को पढ़ने के लिए समय निकालने के लिए धन्यवाद।
हम्म, यह कोड मेरे लिए ठीक काम करता है, और यहां ठीक काम करता है: http://ideone.com/EA0yl। –
मुझे लगता है कि समस्या आपका टर्मिनल हो सकता है। इसे इसके बजाय फ़ाइल में प्रिंट करने का प्रयास करें। –
आप रनटाइम डीबग कर सकते हैं। जेडीके का प्रयोग करें - इसमें स्रोत –