मुझे BigDecimal's toPlainString () से युक्त एक और समाधान मिला है, लेकिन इस बार स्ट्रिंग-कंस्ट्रक्टर का उपयोग करके, जिसे javadoc में अनुशंसित किया गया है:
यह कंस्ट्रक्टर फ्लोट.टोस्ट्रिंग और डबल.टोस्ट्रिंग द्वारा लौटाए गए मूल्यों के अनुकूल है। यह आमतौर पर एक फ्लोट या डबल को बिगडेसिमल में बदलने का पसंदीदा तरीका है, क्योंकि यह बिगडेसीमल (डबल) कंस्ट्रक्टर की अप्रत्याशितता से ग्रस्त नहीं है।
यह अपने सबसे छोटे रूप में इस तरह दिखता है:
return new BigDecimal(myDouble.toString()).stripTrailingZeros().toPlainString();
जावा 8 से पहले, किसी भी शून्य-मूल्यवान डबल्स के लिए "0.0" में यह परिणाम है, इसलिए आपको जोड़ना होगा:
if (myDouble.doubleValue() == 0)
return "0";
NaN और अनंत मूल्यों को अतिरिक्त जाँचना होगा।
इन सभी विचारों का अंतिम परिणाम:
public static String doubleToString(Double d) {
if (d == null)
return null;
if (d.isNaN() || d.isInfinite())
return d.toString();
// Pre Java 8, a value of 0 would yield "0.0" below
if (d.doubleValue() == 0)
return "0";
return new BigDecimal(d.toString()).stripTrailingZeros().toPlainString();
}
यह भी फ्लोट के साथ अच्छी तरह से काम करने के लिए कॉपी / पेस्ट किया जा सकता है।
dexp: 12345681.000000
कि यह गलत मूल्य है। और वास्तव में इसके बाद मैं इसे अपने वेब पेज पर प्रदर्शित करना चाहता हूं, जहां यह इस तरह प्रदर्शित होता है1.2345678E7
। वैसे भी, जिसके माध्यम से मैं इसे किसी भी तरह से12345678
और किसी भी तरह से किसी भी तरह से संग्रहीत कर सकता हूं ?