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