views:

39

answers:

2

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
Float and BigDecimal as well.

Thanks.

A: 
DecimalFormat moneyFormat = new DecimalFormat("$0.00");
System.out.println(moneyFormat.format(1234.56));
krock
+1  A: 

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

Brian Clapper