2011-10-06 20 views
16

thể trùng lặp:
How do I format a number in java?Làm thế nào để loại bỏ "0" trong một số nguyên khi sử dụng đôi trong java?

Tôi có vấn đề trong việc sử dụng đôi. Khi kết quả là một số nguyên, nó sẽ hiển thị với dấu ".0" như 1.0, 2.0.

Bất kỳ ai cũng có thể giúp tôi cách xóa số .0 trong một số nguyên không?

+3

Chuyển đổi nó thành một số nguyên? –

+1

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

+1

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

Trả lời

23

Bạn cần sử dụng DecimalFormat để định dạng số double của mình.

public static void main(String[] args) { 
     DecimalFormat decimalFormat=new DecimalFormat("#.#"); 
     System.out.println(decimalFormat.format(2.0)); //prints 2 
} 
+3

'DecimalFormat (" # ")' là đủ –

+1

@Eng. Fouad - Cảm ơn - vì vậy được sử dụng để có 2 điểm thập phân .. vì vậy nó đã ra khỏi thói quen! – CoolBeans

+0

Mã này có áp dụng cho android không? – ikzton

36
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); 
+1

Điểm tốt +1 cho bạn. – CoolBeans

+0

Đây phải là câu trả lời được chấp nhận. – maaw

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