आप BigDecimal का उपयोग करना चाहिए - लेकिन स्ट्रिंग निर्माता, जैसे का उपयोग करें:
new BigDecimal("10364055.81");
आप BigDecimal करने के लिए एक double
पार कर लेते हैं, जावा बनाना होगा कि डबल पहले - और के बाद से युगल सबसे दशमलव प्रतिनिधित्व नहीं कर सकते भिन्नताएं, 10364055.81000000052154064178466796875
और के रूप में मान बनाएं तो इसे बिगडिसीमल कन्स्ट्रक्टर में पास कर देता है। इस मामले में बिगडेसिमल को यह जानने का कोई तरीका नहीं है कि आप वास्तव में राउंडर संस्करण का मतलब है।
आम तौर पर बिगडिसीमल के गैर-स्ट्रिंग कन्स्ट्रक्टर का उपयोग करके एक चेतावनी माना जाना चाहिए कि आपको कक्षा का पूर्ण लाभ नहीं मिल रहा है।
संपादित करें - जो भी आप करना चाहते थे उसे फिर से पढ़ने के आधार पर, मेरा प्रारंभिक दावा शायद बहुत मजबूत है। BigDecimal एक अच्छा विकल्प है जब आपको दशमलव मानों का सटीक रूप से प्रतिनिधित्व करने की आवश्यकता होती है (उदाहरण के लिए मनी हैंडलिंग स्पष्ट विकल्प है, उदाहरण के लिए आप 5.99 * एक मिलियन 5990016.45
नहीं चाहते हैं।
लेकिन यदि आप आंतरिक रूप से को संग्रहीत दशमलव अक्षर के लिए बहुत ही कम मूल्य के रूप में संग्रहीत किए जाने वाले नंबर के बारे में चिंतित नहीं हैं, और बस उसी प्रारूप में इसे फिर से मुद्रित करना चाहते हैं, तो जैसा कि अन्य ने कहा है , NumberFormat
का एक उदाहरण (इस मामले में, new DecimalFormat("########.##")
) डबल अच्छी तरह से आउटपुट करने के लिए चाल करेगा, या String.format वही काम कर सकता है।
प्रदर्शन के लिए - BigDecimals स्वाभाविक रूप से primitives का उपयोग करने से धीमे हो जाएगा। आमतौर पर, हालांकि, जब तक आपके कार्यक्रम के विशाल बहुमत में गणितीय जोड़-विमर्श शामिल नहीं होता है, तब तक आपको वास्तव में किसी भी गति अंतर की संभावना नहीं है। यह कहना नहीं है कि आपको बिगडेसिमल का उपयोग करना चाहिए; बल्कि, अगर आप उनकी विशेषताओं से वास्तविक लाभ प्राप्त कर सकते हैं जो सादा doubles
के साथ साकार करना मुश्किल या असंभव होगा, तो वे सैद्धांतिक रूप से पेश किए गए मिनीस्कूल प्रदर्शन अंतर को पसीना न करें।
स्रोत
2009-10-22 09:04:02
की शुद्धता के साथ एक डबल मतलब है, मुझे लगता है कि तुम सही हो। लेकिन उस संख्या के लिए एक डबल डेटा प्रकार पर्याप्त होना चाहिए (केवल दो दशमलव)। बिगडिसीमल का उपयोग करना जहां कुछ दोगुना पर्याप्त होता है, कुछ संचालन करते समय कम प्रदर्शन कर सकता है। – sinuhepop