In Java, how can I efficiently convert floats like 1234.56
and similar BigDecimals into Strings like $1,234.56
I'm looking for the following:
String 12345.67
becomes String $12,345.开发者_运维技巧67
I'm also looking to do this with Float
and BigDecimal
as well.
There's a locale-sensitive idiom that works well:
import java.text.NumberFormat;
// Get a currency formatter for the current locale.
NumberFormat fmt = NumberFormat.getCurrencyInstance();
System.out.println(fmt.format(120.00));
If your current locale is in the US, the println
will print $120.00
Another example:
import java.text.NumberFormat;
import java.util.Locale;
Locale locale = new Locale("en", "UK");
NumberFormat fmt = NumberFormat.getCurrencyInstance(locale);
System.out.println(fmt.format(120.00));
This will print: £120.00
DecimalFormat moneyFormat = new DecimalFormat("$0.00");
System.out.println(moneyFormat.format(1234.56));
Here is the code according to your input and output::
The output of the program is $12,345.67 for both BigDecimal and number and it works for float also.
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
public class test {
public static void main(String[] args) {
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(',');
String pattern = "$#,##0.###";
DecimalFormat decimalFormat = new DecimalFormat(pattern, symbols);
BigDecimal bigDecimal = new BigDecimal("12345.67");
String bigDecimalConvertedValue = decimalFormat.format(bigDecimal);
String convertedValue = decimalFormat.format(12345.67);
System.out.println(bigDecimalConvertedValue);
System.out.println(convertedValue);
}
}
精彩评论