%s
是在 printf
中表示字符串,而 %d 则表示十进制数。然而,在放入值时...
writer.printf("%d dollars is the balance of %s\r\n", bal, nm);
当我尝试比较 %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 – 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
是的,%d用于十进制(整数),%f用于浮点数。但是简单地使用%f会默认保留6位精度。要打印双精度浮点数的所有精度数字,您可以将其作为字符串传递:
System.out.printf("%s \r\n",String.valueOf(d));
或者
System.out.printf("%s \r\n",Double.toString(d));
println的默认行为如下:
System.out.println(d)
%.8f
(它将打印8个数字)。 - Eric