2016-06-06 10 views
5

मैं उस मामले का विश्लेषण कर रहा था जहां DecimalFormat गोलाकार एक BigDecimal संख्या और अन्य मशीन पर, इसे छोटा कर दिया गया है।DecimalFormat विभिन्न मशीनों पर दो अलग-अलग परिणामों में परिणाम

मैंने दोनों मशीनों पर सभी कॉन्फ़िगरेशन सत्यापित किए हैं (और सभी समान हैं, मुझे लगता है)। केवल अंतर जो मैंने पाया है वह जेडीके संस्करण है।

मशीन 1 जेडीके 1.6 पर चल रहा है। लेकिन, मैंने मशीन 1 पर जेडीके 1.7 के साथ भी कोशिश की है, यह जेडीके 1.6 के समान काम कर रहा है।

DecimalFormat decimalFormat = new DecimalFormat("#,###.00"); 
BigDecimal anObject = new BigDecimal("3.8880"); 
String str = decimalFormat.format(((Number)anObject).doubleValue()); 
System.out.println(str); 

मशीन 1 परिणाम पर है: 3.39

मशीन 2 परिणाम पर है: 3,38

+2

मुझे नहीं लगता कि संख्या 3.8880 को गोल या 3.38 या 3.3 9 तक छोटा कर दिया जा सकता है। क्या आपका मतलब 3.88/3.89 है? या आपने परीक्षण सही तरीके से नहीं किया? –

+0

कमांड प्रॉम्प्ट "जावा-वर्जन" पर चलाने का प्रयास करें। शायद सिर्फ एक जेवीएम बग। – Aris2World

उत्तर

6

मशीन 2 JDK1.7

के बाद पर चल रहा है कोड का टुकड़ा है

DecimalFormat पर जेडीके 7 में पेश की गई एक बग थी। अधिक जानकारी के लिए यह प्रश्न देखें: Is inconsistency in rounding between Java 7 and Java 8 a bug?

+0

धन्यवाद अर्नुद, मैंने इसे ऑरैकल साइट पर भी देखा है और वहां भी वही बग मिला है। इस संदर्भ की जांच करें [ओरेकल पर बग] (https://bugs.openjdk.java.net/browse/JDK-8039915) साइट –

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