2010-06-19 132 views
24

在Java中,我如何能有效地將像1234.56花車和類似BigDecimals的成字符串像$1,234.56美元貨幣格式在Java中

我在尋找以下:

字符串12345.67成爲字符串$12,345.67

我也在尋找FloatBigDecimal

回答

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

非常好!我喜歡這個解決方案 – Erick 2016-06-03 11:54:57

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

以下是根據您的輸入和輸出的代碼::

該程序的輸出對於BigDecimal和數字都是$ 12,345.67,它也適用於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); 
    } 
}