2011-12-14 36 views
9
public static String formatAmountUpToTwoDecimalNumber(String amount) 
    {  
     if(amount==null || "".equals(amount)) 
     { 
      return ""; 
     } 
     Double doubleAmount = Double.valueOf(amount); 
     double myAmount = doubleAmount.doubleValue(); 
     NumberFormat f = new DecimalFormat("###,###,###,###,##0.00"); 
     String s = f.format(myAmount); 
     return s; 
    } 

"###,###,###,###,##0.00", mục đích của mẫu này là gì? Tôi tin rằng nó phục vụ hai mục đíchDecimalFormat pattern

  1. đến các số nhóm, đó là đưa ngàn seperator dấu phẩy
  2. để nối thêm hai số sau chữ số thập phân nếu số thập phân là mất tích đó là chuyển đổi 23 đến 23,00

Nhưng tại sao lại có là "0" thay vì "#" trước thập phân? chính xác mục đích của số không này là gì? Cảm ơn sự giúp đỡ.

Trả lời

18
Symbol Location Localized? Meaning 
0  Number  Yes   Digit 
#  Number  Yes   Digit, zero shows as absent 

Từ: http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html

Vì vậy # không được hiển thị khi không có số. 0 hàng đầu có nghĩa là sẽ có ít nhất 1 chữ số trước dấu phân cách thập phân.

+2

cảm ơn tôi đã xem tài liệu, nhưng thực sự không thể hiểu được. Tôi đã bối rối, không nên được thực hiện theo nghĩa đen của nó? – Zohaib

+1

Như được giải thích trong tài liệu, số không nên được lấy theo nghĩa đen khi được sử dụng trong chuỗi định dạng. – Pieter

+0

"Sẽ có ít nhất 1 chữ số", bạn có muốn nói rằng nếu không có chữ số nào trước số thập phân mà tôi nếu tôi vượt qua .7, nó sẽ trả lại cho tôi 0,70 sau khi nối thêm số 0 không? – Zohaib

4

# sẽ chỉ đặt chữ số nếu đó không phải là số 0 đứng đầu. 0 sẽ đặt một chữ số ngay cả khi nó có dấu 0. Bạn cũng có thể sử dụng số 0 ở phía trước nếu bạn muốn in số chữ số cố định.

4

Với số không trước dp, các số nhỏ như 0,23 sẽ được hiển thị là 0,23. Nếu không có nó, bạn sẽ không nhận được số 0 hàng đầu, vì vậy nó chỉ được hiển thị dưới dạng .23. Nếu bạn có một bảng tính như excel bạn có thể kiểm tra này có quá.

+1

Tôi chỉ thử nghiệm này với ###. ### và tôi nhận được 0,23 là khá khó chịu vì tôi không muốn số 0 hàng đầu cho những gì tôi đang làm – MikeB

+0

@MikeB - Tôi vừa kiểm tra bằng Excel 2003 và số 0 đứng đầu chắc chắn bị giảm nếu định dạng ô là ###. ### – DaveRlz

+1

@DaveRiz nhưng đây là câu hỏi java – MikeB