Javaでは、浮動小数点変数をprintf
または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でコンパイルすることです。そして、gcjJREバージョン4.7.2とOpenJDKJREバージョン7u7-2.3.2aをインストールします。コードを編集しました。これで、プログラムのコード全体になりました。他のコードの浮動小数点数に関するこれらの問題に気付いた後、私はそれを小さなテストプログラムとして作成しました。