ホームページ >Java >&#&チュートリアル >Java で Double を正確なフォーマットで出力し、不必要な末尾のゼロを削除するにはどうすればよいですか?

Java で Double を正確なフォーマットで出力し、不必要な末尾のゼロを削除するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-31 13:41:11615ブラウズ

How Can I Print Doubles in Java with Precise Formatting, Eliminating Unnecessary Trailing Zeros?

Java で浮動小数点数を正確に出力する

範囲内の整数を正確に表現できる 64 ビット double の機能を考慮すると、混合整数と整数を出力するときに問題が発生します。二重値。 String.format("%f") は厳密な書式設定を提供しますが、小さな値には不要な末尾のゼロが追加されます。

解決策の模索:

目標は出力することです。実際の double の高精度を維持しながら、10 進数のゼロを含まない double として整数値を格納します。たとえば、これらを考慮すると、入力:

  • 232.00000000
  • 0.18000000000
  • 1237875192 .0
  • 4.5800000000
  • 0.00000000
  • 1.23450000

望ましい出力は:

  • 232
  • 0.18
  • 1237875192
  • 4.58
  • 0
  • 1.2345

効率的書式設定:

書式設定を最適化するには、整数値を 64 ビット double として正確に表現できるという事実を利用できます。次の Java コード スニペットは、パフォーマンス重視の文字列操作に頼らずにこれを実現します。

public static String fmt(double d) {
    if (d == (long) d)
        return String.format("%d", (long) d);
    else
        return String.format("%s", d);
}

説明:

  • 正確に表現できる整数値の場合double の場合、コードはそれらをlongに変換し、%dを使用してフォーマットします。これにより、不要な末尾のゼロが削除されます。
  • 非整数値の場合、コードは %s を使用して、元の double 値を最小限の精度で保持します。

結果:

入力例に適用すると、出力は目的の形式と一致します:

232
0.18
1237875192
4.58
0
1.2345

以上がJava で Double を正確なフォーマットで出力し、不必要な末尾のゼロを削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。