printf
在 Java 中,当我向or提供浮点变量时String.format
,它什么也没提供。为了说明,一个例子:
public class test {
public static void main(String arg[]) {
double d = 123.456;
System.out.println("println: " + d + " " + (int) d);
System.out.printf("printf as int: %d%n", (int) d);
System.out.printf("printf with %%f: %f%n", d);
System.out.printf("printf with %%e: %e%n", d);
System.out.printf("printf with %%g: %g%n", d);
System.out.printf("printf with %%a: %a%n", d);
}
}
给
in println: 123.456 123
in printf as int: 123
in printf with %f:
in printf with %e:
in printf with %g:
in printf with %a:
如您所见,它确实适用于println
,但在 printf 上失败。也一样String.format
。如果我提供宽度和精度,它会做同样的事情 - 什么都不提供。
我究竟做错了什么?
编辑:我正在使用 en_US.UTF-8 语言环境;我不确定我使用的是什么版本的 Java。我所知道的是:我用 gcc (gcj) 编译它,版本 4.7.2;并安装了 gcj JRE 4.7.2 版和 OpenJDK JRE 7u7-2.3.2a 版。编辑了代码。现在它是程序的整个代码。在我注意到其他代码中的浮点数存在这些问题后,我将其编写为一个小型测试程序。