2013-07-31 7 views
9

क्या double से BigInteger पर कनवर्ट करने के लिए वैसे भी है?क्या डबल से बिगइंटर में कनवर्ट करने के लिए वैसे भी है?

double doubleValue = 64654679846513164.2; 
BigInteger bigInteger = (BigInteger) doubleValue; 

मैं इसे कास्ट करने की कोशिश करता हूं लेकिन यह काम नहीं करता है।

+0

मेरा अनुमान है कि आप एक पूर्णांक और एक (चल बिन्दु) के बीच का अंतर समझ में नहीं आता डबल। –

+0

या रूपांतरण और कास्टिंग के बीच। – EJP

+1

शायद वह एक बिगइन्टर चाहता है जिसमें 64654679846513164 –

उत्तर

17

बिगइंटर को मनमाने ढंग से सटीक पूर्णांक संख्याओं को पकड़ने के लिए बनाया गया है, दशमलव नहीं। आप डबल रखने के लिए BigDecimal कक्षा का उपयोग कर सकते हैं।

BigDecimal k = BigDecimal.valueOf(doublevalue); 

सामान्य रूप से, आप किसी अन्य वर्ग में जावा आदिम को कास्ट नहीं कर सकते हैं। Long और Integer रैपर कक्षाएं, जो आपको एक इंटीजर में एक int मान डालने की अनुमति देता है, और इसी तरह के अपवादों के बारे में मुझे पता है कि Number विस्तारित कक्षाएं हैं।

+0

यह ओपी में मदद करेगा यदि आप समझते हैं कि क्यों कास्टिंग प्रकार काम नहीं करता है। –

+1

@ लुइगी मैन्डोज़ा मैंने कास्टिंग के बारे में एक विचार जोड़ा, लेकिन यह सुनिश्चित नहीं है कि यह ओपी की समस्या का उत्तर देगा क्योंकि वह अधिक सामान्य चीजों के बारे में उलझन में प्रतीत होता है। एकदम मेरे विचार। – Kon

-1

यो डबल बिगइंटर के लिए नहीं डाला जा सकता है, क्योंकि इन दो वर्गों में संख्या वर्ग से विस्तारित सहकर्मी वर्ग हैं। आपको संख्या में डाला जा सकता है और फिर आगे रूपांतरण कर सकता है।

29

आप एक BigDecimal और तो में डबल परिवर्तित कर सकते हैं एक BigInteger में:

BigInteger k = BigDecimal.valueOf(doublevalue).toBigInteger(); 
+2

यदि आप वास्तव में डबल के अभिन्न अंग को लेना चाहते हैं और इसे BigInteger में संग्रहीत करना चाहते हैं, तो यह निश्चित रूप से सबसे अच्छा जवाब है? –

संबंधित मुद्दे