2010-10-04 39 views
20

%s là một chuỗi trong printf, và% d là một số thập phân, tôi nghĩ ... nhưng khi đưa vàoJava: đúp% định dạng câu hỏi cho printf

writer.printf("%d dollars is the balance of %s\r\n", bal, nm); 

ngoại lệ được ném ..an nói với tôi rằng %d ! = lang.double. Ý tưởng?

+1

Loại "bal" là gì? – Amirshk

Trả lời

44

%d là dành cho số nguyên sử dụng %f thay vào đó, nó hoạt động cho cả floatdouble loại:

double d = 1.2; 
float f = 1.2f; 
System.out.printf("%f %f",d,f); // prints 1.200000 1.200000 
+0

BTW, nó chỉ in 6 tỷ lệ sau dấu thập phân, có thể in nhiều hơn như thế này: '% .8f' (nó in 8 tỷ lệ). –

21

Vâng, %d nghĩa thập phân, nhưng nó có nghĩa là hệ thống số thập phân, không thập phân điểm.

Hơn nữa, dưới dạng bổ sung cho bài đăng cũ, bạn cũng có thể kiểm soát số lượng dấu thập phân để hiển thị. Hãy thử điều này,

System.out.printf("%.2f %.1f",d,f); // prints 1.20 1.2 

Để biết thêm, vui lòng tham khảo API docs.