2012-04-22 21 views
56

पर 0 को हटाने मैं एक BigDecimal संख्या है और मैं केवल विचार करें इसके बारे में 2 दशमलव स्थानों तो मैं का उपयोग कर काट-छांट यह:स्वरूप अधिकतम 2 दशमलव अंकों के साथ स्ट्रिंग के रूप में एक BigDecimal, दशमलव हिस्सा

bd = bd.setScale(2, BigDecimal.ROUND_DOWN) 

अब मैं चाहता हूँ स्ट्रिंग के रूप में इसे प्रिंट लेकिन दशमलव हिस्से को हटाने अगर यह 0 है, उदाहरण के लिए:

1.00 -> 1

1.50 -> 1.5

1.99 -> 1.99

मैंने एक फॉर्मेटर, formatter.format का उपयोग करने की कोशिश की लेकिन मुझे हमेशा 2 दशमलव अंक मिलते हैं।

मैं यह कैसे कर सकता हूं? शायद bd.toPlainString() से स्ट्रिंग पर काम कर रहे हैं?

उत्तर

71

मैंने स्ट्रिंग को स्वरूपित करने के बजाय बिगडिसीमल को स्वरूपित करने के लिए दशमलव फ़ार्मेट का उपयोग किया, इसमें कोई समस्या नहीं है।

bd = bd.setScale(2, BigDecimal.ROUND_DOWN); 

DecimalFormat df = new DecimalFormat(); 

df.setMaximumFractionDigits(2); 

df.setMinimumFractionDigits(0); 

df.setGroupingUsed(false); 

String result = df.format(bd); 
+0

क्या इस कार्यक्रम के लिए उम्मीद उत्पादन होता है। मुझे दशमलव बिंदु के पीछे शून्यों को पीछे रखने के लिए समान आवश्यकताएं मिलीं जैसे ** 00 ** आउटपुट में छंटनी। –

+1

@ पैरामेशकोरराकुति 'df.setMinimumFractionDigits (2) 'सेटस्केल और सेट ग्रुपिंग और सेटमैक्सफ्राक के बिना ठीक काम करता है। –

+3

दशमलव प्रारूप संख्या छद्म में संख्या है। 'NumberFormat संख्या का उपयोग करें Format = NumberFormat.getPercentInstance(); 'फिर' संख्या Format.setMinimumFractionDigits (2);' फिर 'स्ट्रिंग प्रतिशत = संख्या Format.format (yourBigDecimal);' –

6

stripTrailingZeros() का उपयोग करें।

This आलेख आपको मदद कर सकता है।

45
new DecimalFormat("#0.##").format(bd) 
+28

मैं 'नया DecimalFormat (" 0.00 ") का उपयोग करता हूं, अगर मैं चाहता हूं यह सुनिश्चित करने के लिए कि दो दशमलव स्थान हमेशा दिखाए जाते हैं, उदाहरण के लिए '1000.5'' 1000.50' के रूप में प्रदर्शित होगा। –

+1

@ क्रिसपार्टन का समाधान पूरी तरह से काम करता है, इसके अतिरिक्त अगर किसी को स्थानीयकरण लागू करने की आवश्यकता होती है, तो हम नीचे तर्क का उपयोग कर सकते हैं। 'आयात java.math.BigDecimal; आयात java.text। *; सार्वजनिक वर्ग LocalizeExample { public static void (String [] args) { BigDecimal BD = नए BigDecimal ("123.10"); दशमलव फार्मा दशमलव दशमलव = (दशमलव दशमलव) संख्याफॉर्मैट.getNumberInstance (Locale.GERMAN); दशमलव Format.applyPattern ("# 0.00"); स्ट्रिंग परिणाम = दशमलव Format.format (बीडी); System.out.println (परिणाम); } } ' –

6

नीचे कोड आप मदद कर सकते हैं:

कोड कुछ इस तरह है।

protected String getLocalizedBigDecimalValue(BigDecimal input, Locale locale) { 
    final NumberFormat numberFormat = NumberFormat.getNumberInstance(locale); 
    numberFormat.setGroupingUsed(true); 
    numberFormat.setMaximumFractionDigits(2); 
    numberFormat.setMinimumFractionDigits(2); 
    return numberFormat.format(input); 
} 
2

तो अपने पैसे का उपयोग करें:

NumberFormat.getNumberInstance(java.util.Locale.US).format(bd)