2010-01-29 18 views
9

Trong java, có thể sử dụng String.format để chỉ hiển thị số thập phân nếu thực sự có nhu cầu không? Ví dụ, nếu tôi làm điều này:Có thể sử dụng String.format cho điểm thập phân có điều kiện không?

String.format("%.1f", amount); 

nó sẽ định dạng: "1,2222" -> "1.2" "1.000" -> "1.0" vv,

nhưng trong trường hợp thứ hai (1.000) Tôi muốn nó trở lại chỉ "1". Điều này có thể xảy ra với String.format, hay tôi sẽ phải sử dụng một DecimalFormatter?

Nếu tôi phải sử dụng trình định dạng thập phân, tôi có cần tạo một DecimalFormatter riêng cho từng loại định dạng mà tôi muốn không? (Lên đến 1 nơi thập phân, lên đến 2 chữ số thập phân, vv)

Trả lời

10

Không, bạn phải sử dụng DecimalFormat:

final DecimalFormat f = new DecimalFormat("0.##"); 
System.out.println(f.format(1.3)); 
System.out.println(f.format(1.0)); 

Đặt càng nhiều # s như bạn muốn; các DecimalFormat sẽ chỉ in như nhiều chữ số như nó nghĩ là đáng kể, lên đến số lượng # s.

3

Điều này có thể giúp bạn tìm thấy những gì bạn đang tìm kiếm; Tôi không chắc chắn về các yêu cầu hoặc bối cảnh yêu cầu của bạn.

float f; 
f = 1f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1 
f = 1.555f 
System.out.printf(f==Math.round(f) ? "%d\n" : "%s\n", f); //1.555 

Làm việc tuyệt vời cho những gì tôi cần.

FYI, trên, System.out.printf (fmt, x) là như System.out.print (String.format (fmt, x)

Các vấn đề liên quan