1. ホーム
  2. java

[解決済み] 浮動小数点以下の0を削除して文字列に変換する方法

2022-03-17 07:36:29

質問

64ビットダブルは整数の±2乗を表すことができる 53 を正確に表示します。

この事実を踏まえて、私は最大の整数が符号なし32ビット数であることから、すべての型をdouble型に統一することにしました。

しかし、今度はこの疑似整数を印刷しなければならないのですが、問題は実際の倍数も混ざっていることです。

では、Javaでこれらの倍数をきれいに印刷するにはどうすればよいのでしょうか?

私が試したのは 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...) ロケールに依存する (下記回答参照)。

解決方法は?

倍数として格納された整数をあたかも整数のように表示し、それ以外は必要最小限の精度で倍数を表示するというものであれば。

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

また、文字列操作に依存しない。