64 ビットの double は、整数 +/- 2 53 を正確に表現できます。
この事実を考慮して、最大の整数は符号なし 32 ビットの数値であるため、すべての型に対して double 型を単一の型として使用することを選択しました。
しかし、今度はこれらの疑似整数を印刷する必要がありますが、問題は、これらが実際の倍精度数と混在していることです。
では、Java でこれらの double をきれいに印刷するにはどうすればよいでしょうか?
を試してみましたがString.format("%f", value)
、小さい値に対して末尾のゼロが多数表示される点を除けば、近い結果になりました。
以下はの出力例です。%f
232.00000000 0.18000000000 1237875192.0 4.5800000000 0.00000000 1.23450000
私が欲しいのは:
232 0.18 1237875192 4.58 0 1.2345
もちろん、ゼロをトリムする関数を書くことはできますが、文字列操作によってパフォーマンスが大幅に低下します。他のフォーマット コードを使用すると、もっとうまくできますか?
Tom E. と Jeremy S. の回答は、どちらも小数点以下 2 桁に任意に丸めているため受け入れられません。回答する前に問題を理解してください。
これはロケールに依存するString.format(format, args...)
ことに注意してください(以下の回答を参照)。
ベストアンサー1
倍精度として格納された整数を整数であるかのように印刷し、それ以外の場合は倍精度を必要最小限の精度で印刷するという考え方の場合:
public static String fmt(double d)
{
if(d == (long) d)
return String.format("%d",(long)d);
else
return String.format("%s",d);
}
生産:
232
0.18
1237875192
4.58
0
1.2345
文字列操作に依存しません。