मैं 2 अंकों के अंक में बदल दो मुद्रा मानों की तुलना करने BigDecimal का उपयोग कर की सोच रहा हूँ में BigDecimal। उदाहरण के लिए मैं निम्नलिखित 0 को उपज करने की अपेक्षा करता हूं क्योंकि मैं कुछ ऐसा तुलना कर रहा हूं जो 0.02 के साथ 0.02 के साथ होना चाहिए। लेकिन यह -1 पैदा करता है !! क्या ऐसा करने का कोई सही तरीका है?जावा
यह भी 123.45 बनाम 123.4534 की तरह बड़ी संख्या के लिए काम करना चाहिए ... जो 0 उपज चाहिए जब "compareTo" प्रयोग किया जाता है।
मैं गणित संदर्भ का उपयोग कर की कोशिश की है, लेकिन यह सुंदर लग रहे हैं नहीं करता है ... वहाँ एक सही तरीका है?
BigDecimal spread = new BigDecimal(0.01934);
spread.setScale(2, RoundingMode.HALF_EVEN);
System.out.format("0.0193 ? 0.02 = %d\n", spread.compareTo(new BigDecimal(0.02)));
और समाधान है:
BigDecimal spread = new BigDecimal(0.01934).setScale(2, RoundingMode.HALF_EVEN);
BigDecimal loSpread = new BigDecimal(0.02).setScale(2, RoundingMode.HALF_EVEN);
System.out.format("0.0193 ? 0.02 = %d\n", spread.compareTo(loSpread));
सटीक फ़्लोटिंग पॉइंट नंबर प्राप्त करने का यह एक और तरीका है। 1 +। –
इसे सही करने के लिए यहां दोनों विचारों का उपयोग करना था। सही कोड पोस्ट करेंगे। – fodon