2010-06-19 5 views
24

В Java, как я могу эффективно конвертировать поплавки как 1234.56 и подобные BigDecimals в Струны как $1,234.56USD Валюта Форматирование в Java

Я ищу следующий:

Строка 12345.67 становится Строка $12,345.67

Я также хочу сделать это с Float и BigDecimal.

ответ

8
DecimalFormat moneyFormat = new DecimalFormat("$0.00"); 
System.out.println(moneyFormat.format(1234.56)); 
+0

Отлично! Мне нравится это решение – Erick

30

Там в локали чувствительных идиома, которая работает хорошо:

import java.text.NumberFormat; 

// Get a currency formatter for the current locale. 
NumberFormat fmt = NumberFormat.getCurrencyInstance(); 
System.out.println(fmt.format(120.00)); 

Если текущая локаль в США, println напечатает $ 120,00

Другой пример:

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)); 

Это напечатает: £ 120.00

0

Вот код в соответствии с вашими входными и выходными данными:

Результат программы составляет $ 12 345,67 как для BigDecimal, так и для числа, и он также работает для float.

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); 
    } 
} 
Смежные вопросы