Java中printf的双%格式化问题
%s
是printf
一个字符串,%d是我认为的小数…但是在放入时
writer.printf("%d dollars is the balance of %s\r\n", bal, nm);
..抛出exception告诉我%d
!= lang.double。 想法?
%d
代表整数使用%f
,它适用于float
和double
类型:
double d = 1.2; float f = 1.2f; System.out.printf("%f %f",d,f); // prints 1.200000 1.200000
是的, %d
表示十进制,但它表示十进制数系统 ,而不是小数点。
此外,作为前一篇文章的补充,您还可以控制要显示的小数点数。 尝试这个,
System.out.printf("%.2f %.1f",d,f); // prints 1.20 1.2
有关更多信息,请参阅API文档 。
是的,%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)
(并终止该行)