@jatan
धन्यवाद आप के लिए जवाब। यह समझ में आता है। क्या आप कृपया BigDecimal # राउंड विधि के संदर्भ में MathContext को समझा सकते हैं।
के बारे में BigDecimal.round()
बनाम किसी अन्य BigDecimal
विधि विशेष कुछ भी नहीं है। सभी मामलों में, MathContext
महत्वपूर्ण अंकों और राउंडिंग तकनीक की संख्या निर्दिष्ट करता है। असल में, प्रत्येक MathContext
के दो भाग हैं। एक परिशुद्धता है, और RoundingMode
भी है।
सटीक फिर से महत्वपूर्ण अंकों की संख्या निर्दिष्ट करता है। इसलिए यदि आप 123
को एक संख्या के रूप में निर्दिष्ट करते हैं, और 2 महत्वपूर्ण अंक मांगते हैं, तो आपको 120
मिल जाएगा। यदि आप वैज्ञानिक नोटेशन के संदर्भ में सोचते हैं तो यह स्पष्ट हो सकता है।
123
वैज्ञानिक नोटेशन में 1.23e2
होगा। यदि आप केवल 2 महत्वपूर्ण अंक रखते हैं, तो आपको 1.2e2
, या 120
मिलते हैं। महत्वपूर्ण अंकों की संख्या को कम करके, हम परिशुद्धता को कम करते हैं जिसके साथ हम एक संख्या निर्दिष्ट कर सकते हैं।
RoundingMode
भाग निर्दिष्ट करता है कि हमें परिशुद्धता के नुकसान को कैसे संभालना चाहिए। उदाहरण का पुन: उपयोग करने के लिए, यदि आप संख्या के रूप में 123
का उपयोग करते हैं, और 2 महत्वपूर्ण अंकों के लिए पूछते हैं, तो आपने अपनी परिशुद्धता कम कर दी है। HALF_UP
(डिफ़ॉल्ट मोड) के साथ, 123
120
बन जाएगा। CEILING
के के साथ, आपको 130
मिल जाएगा।
उदाहरण के लिए:
System.out.println(new BigDecimal("123.4",
new MathContext(4,RoundingMode.HALF_UP)));
System.out.println(new BigDecimal("123.4",
new MathContext(2,RoundingMode.HALF_UP)));
System.out.println(new BigDecimal("123.4",
new MathContext(2,RoundingMode.CEILING)));
System.out.println(new BigDecimal("123.4",
new MathContext(1,RoundingMode.CEILING)));
आउटपुट:
123.4
1.2E+2
1.3E+2
2E+2
आप देख सकते हैं कि दोनों परिशुद्धता और राउंडिंग मोड उत्पादन प्रभावित करते हैं।
क्या '123.4' प्रारूपित करने के लिए '123.4' प्रारूपित करने का कोई तरीका है' 120' जैसी स्ट्रिंग में परिणाम? यह 2 महत्वपूर्ण आंकड़े हैं (जैसा कि '1.2E2' है) क्योंकि पीछे की ओर शून्य होने तक महत्वपूर्ण आंकड़ों को पुनर्प्राप्त करने में पीछे शून्यों को पारंपरिक रूप से शामिल नहीं किया जाता है। और मेरे उद्देश्यों के लिए, यदि प्रारूपित करने की संख्या '103.4' थी, तो मुझे परवाह नहीं है कि आप परिणामस्वरूप' 100' संख्या में 2 सिग अंजीर नहीं बता सकते हैं। मैं सिर्फ संख्याओं के सरल/क्लीनर देखना चाहता हूं। – hepcat72