%s
是printf
中的字符串,%d是我认为的小数...但是在放入
writer.printf("%d dollars is the balance of %s\r\n", bal, nm);
..抛出异常告诉我%d
!= lang.double。想法?
答案 0 :(得分:57)
%d
适用于使用%f
的整数,它适用于float
和double
类型:
double d = 1.2;
float f = 1.2f;
System.out.printf("%f %f",d,f); // prints 1.200000 1.200000
答案 1 :(得分:23)
是的, %d
表示十进制,但它表示十进制数字系统,而不是小数点。
此外,作为前一篇文章的补充,您还可以控制要显示的小数点数。试试这个,
System.out.printf("%.2f %.1f",d,f); // prints 1.20 1.2
有关详情,请参阅API docs。
答案 2 :(得分:3)
以下是您可以在printf中使用的转换字符列表:
%d – for signed decimal integer
%f – for the floating point
%o – octal number
%c – for a character
%s – a string
%i – use for integer base 10
%u – for unsigned decimal number
%x – hexadecimal number
%% – for writing % (percentage)
%n – for new line = \n
答案 3 :(得分:1)
是,%d代表十进制(整数),双倍期望%f。但是简单地使用%f将默认为精度6.要打印double的所有精确数字,您可以通过字符串传递它:
System.out.printf("%s \r\n",String.valueOf(d));
或
System.out.printf("%s \r\n",Double.toString(d));
这是println默认执行的操作:
System.out.println(d)
(并终止该行)