浮動小数点数を不要な小数点の 0 なしで文字列に適切にフォーマットする方法 質問する

浮動小数点数を不要な小数点の 0 なしで文字列に適切にフォーマットする方法 質問する

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

文字列操作に依存しません。

おすすめ記事