इस साधारण प्रोग्राम चल रहा है:नया बिगडिसीमल ("0.0") क्यों होता है। स्ट्रिप ट्रायलिंग जेरोस() का स्तर 1 है?
public static void main(final String... args)
{
System.out.println(BigDecimal.ZERO.scale());
System.out.println(new BigDecimal("0").scale());
System.out.println(new BigDecimal("0.0").stripTrailingZeros().scale());
System.out.println(new BigDecimal("1.0").stripTrailingZeros().scale());
}
आउटपुट:
0
0
1
0
मेरा प्रश्न नहीं बल्कि सरल है: क्यों नहीं देता है तीसरे println
उत्पादन 0
? यही कारण है कि तार्किक प्रतीत होता है ...
संपादित: ठीक है, इसलिए, यह एक बहुत पुरानी बग है:
और वास्तव में, यह शून्य के किसी भी संख्या के लिए "काम": new BigDecimal("0.0000").stripTrailingZeroes().scale()
4 है!
(http://stackoverflow.com/questions/5239137/clarification-on-behavior-of-bigdecimal-striptrailingzeroes) [BigDecimal.stripTrailingZeroes() के व्यवहार पर स्पष्टीकरण] के संभावित डुप्लिकेट –
प्रश्न एंड्रयू को जोड़ने है वास्तव में वही है, लेकिन ध्यान रखें कि स्वीकृत उत्तर गलत है। आपके द्वारा देखे जाने वाले व्यवहार में अन्य उत्तर में वर्णित बग है: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6480539 – jarnbjo