2010-01-13 17 views

Trả lời

21

Dưới đây là một trong tôi luôn luôn kết thúc bằng cách sử dụng trong một lớp học java hoặc thông qua fmt: thẻ JSTL formatNumber:

DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00"); 
String formatted = format.format(15.5); 

Nó luôn luôn tạo ra ít nhất một $ 0.00 và phù hợp khi được hiển thị. Cũng bao gồm hàng nghìn người dùng khi cần thiết. Bạn có thể di chuyển dấu trừ ở phía trước ký hiệu đô la nếu đó là yêu cầu của bạn.

2

Có lẽ cách tốt nhất là tạo DecimalFormat của riêng bạn nếu bạn muốn định dạng cụ thể thay vì dựa vào mặc định.

Chỉnh sửa: Bạn cũng có thể truyền kết quả của NumberFormat.getCurrencyInstance() tới DecimalFormat và điều chỉnh nó theo sở thích của bạn.

+0

có lẽ bạn là đúng, nhưng ứng dụng của tôi sẽ có thể f ormat tiền tệ trong miền địa phương có thể. Nó sẽ không quá khó để thực hiện định hình cho tất cả những miền địa phương? –

30

Nó đòi hỏi một chút tinh chỉnh của DecimalFormat trả về bởi NumberFormat.getCurrencyInstance() để làm điều đó một cách độc lập về miền địa phương. Đây là những gì tôi đã (thử nghiệm trên Android):

DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance(); 
String symbol = formatter.getCurrency().getSymbol(); 
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need 
formatter.setNegativeSuffix(""); 

IIRC, Currency.getSymbol() có thể không trả về giá trị cho tất cả các miền địa phương cho tất cả các hệ thống, nhưng nó phải làm việc cho những người lớn (và tôi nghĩ rằng nó có một dự phòng hợp lý trên riêng của nó, vì vậy bạn không cần phải làm bất cứ điều gì)

1

Hãy thử:

NumberFormat.getCurrencyInstance(Locale.CANADA);

0
NumberFormat.getCurrencyInstance(Locale.UK);