2012-02-06 14 views
7

java.math.BigDecimal.toString() कुछ "0.888200000" जैसे कुछ वापस कर सकता है। यदि मैं इसके बजाय "0.8882" चाहता हूं तो मैं सबसे अच्छा क्या कर सकता हूं? मैं कभी भी नहीं जानता (जब तक कि मैं इसे प्रत्येक विशेष मामले के लिए गणना नहीं करता) पूर्णांक की लंबाई (बिंदु से बाएं) भाग, मूल्य 123.8882 जितनी आसानी से 123456.88 हो सकता है।जावा में स्ट्रिंग में बिगडिसीमल को परिवर्तित करते समय महत्वहीन शून्य कैसे छोड़ें?

उत्तर

10

उपयोग stripTrailingZeros():

रिटर्न एक BigDecimal जो संख्यानुसार इस एक के लिए, लेकिन प्रतिनिधित्व से हटा किसी भी अनुगामी शून्य से बराबर है।

, http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html

+0

धन्यवाद में आंतरिक रूप से करता है की तुलना में तेजी हो सकता है। मैंने इसे याद किया है क्योंकि मैं वास्तव में स्कैला को कोडिंग कर रहा हूं और इसके मानक बिगडिसीमल रैपर में स्ट्रिप नहीं लग रहा है ट्रायलिंग ज़ीरोस :-( – Ivan

+1

@ इवान: लाइब्रेरी वही है जिस पर आप उपयोग की जाने वाली भाषा के बारे में निश्चित रूप से हैं? तो उम्मीद है कि यह बस कार्य (टीएम) –

+1

हां यह @ tj-crowder है, लेकिन हम आमतौर पर स्कैला में आवश्यक होने तक सीधे जावा प्रकारों का उपयोग करने से बचते हैं - हम प्रकार ('scala.math.bigDecimal') पर स्कैला मानक "रैपर" का उपयोग करना पसंद करते हैं लेकिन यह वास्तव में 'java.math.BigDecimal' को समाहित करता है और हम इसे रैपर द्वारा प्रदान किए जाने वाले तरीके का उपयोग करने के लिए एक्सेस कर सकते हैं। – Ivan

1

देखें या यदि आप कल्पना नियमित अभिव्यक्ति:

Pattern p = Pattern.compile("(.*?)0*$"); 
Matcher m = p.matcher(yourString); 
String result=m.group(1); 

सब गंदा सामान BigInteger वर्ग अपनी stripTrailingZeroes विधि

+1

एक आसान विकल्प है। धन्यवाद। – Ivan