import java.text.DecimalFormat;
public class Asdf {
public static void main(String[] args) {
DecimalFormat format = new DecimalFormat();
format.setDecimalSeparatorAlwaysShown(false);
Double asdf = 2.0;
Double asdf2 = 2.11;
Double asdf3 = 2000.11;
System.out.println(format.format(asdf));
System.out.println(format.format(asdf2));
System.out.println(format.format(asdf3));
}
}
in:
2
2.11
2,000.11
Sử dụng
DecimalFormat format=new DecimalFormat("#.#"); //not okay!!!
không phải là đúng vì nó messes với 10^3, 10^6 vv dải phân cách.
2000,11 sẽ được hiển thị như "2000,11" thay vì "2,000.11"
Đây là tất nhiên nếu bạn muốn hiển thị số được định dạng đúng, không chỉ sử dụng toString không đúng cách().
Cũng lưu ý, định dạng mà có thể khác nhau dựa trên người sử dụng Locale và DecimalFormat nên được khởi tạo phù hợp sử dụng một phương pháp nhà máy với Locale của người dùng như một cuộc tranh cãi:
NumberFormat f = NumberFormat.getInstance(loc);
if (f instanceof DecimalFormat) {
((DecimalFormat) f).setDecimalSeparatorAlwaysShown(true);
}
http://download.oracle.com/javase/1.5.0/docs/api/java/text/DecimalFormat.html
CẬP NHẬT định dạng này chuỗi hoạt động tốt mà không cần gọi phương thức bổ sung:
DecimalFormat format=new DecimalFormat("#,###.#");
//format.setDecimalSeparatorAlwaysShown(false);
Chuyển đổi nó thành một số nguyên? –
Việc đóng câu hỏi này không đúng vì nó không phải là câu hỏi chung "Cách định dạng số trong Java", mà là câu hỏi về kiểu định dạng cụ thể. – MarianP
Thay vào đó phải là một bản sao của http://stackoverflow.com/questions/703396/how-to-nicely-format-floating-types-to-string – rds