Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mencetak Doubles dalam Java dengan Pemformatan Tepat, Menghapuskan Sifar Jejak yang Tidak Diperlukan?

Bagaimanakah Saya Boleh Mencetak Doubles dalam Java dengan Pemformatan Tepat, Menghapuskan Sifar Jejak yang Tidak Diperlukan?

Barbara Streisand
Barbara Streisandasal
2024-12-31 13:41:11615semak imbas

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

Mencetak Nombor Terapung dengan Ketepatan dalam Java

Memandangkan keupayaan gandaan 64-bit untuk mewakili integer dengan tepat dalam julat, cabaran timbul apabila mencetak integer campuran dan nilai berganda. Walaupun String.format("%f") menyediakan pemformatan rapat, ia menambahkan sifar pengekoran yang tidak perlu untuk nilai kecil.

Mencari Penyelesaian:

Matlamatnya adalah untuk mencetak nilai integer disimpan sebagai beregu tanpa sifar perpuluhan, sambil mengekalkan ketepatan tinggi untuk beregu sebenar. Sebagai contoh, diberikan ini input:

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

The output yang dikehendaki akan jadi:

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

Cekap Pemformatan:

Untuk mengoptimumkan pemformatan, kita boleh mengeksploitasi fakta bahawa nilai integer boleh diwakili dengan tepat sebagai 64-bit dua kali ganda. Coretan kod Java berikut mencapai ini tanpa menggunakan manipulasi rentetan intensif prestasi:

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

Penjelasan:

  • Untuk nilai integer yang boleh diwakili dengan tepat sebagai dua kali ganda, kod menukarnya kepada panjang dan memformatkannya menggunakan %d. Ini menghapuskan sifar mengekor yang tidak diperlukan.
  • Untuk nilai bukan integer, kod menggunakan %s untuk mengekalkan nilai berganda asal dengan ketepatan yang minimum.

Keputusan:

Apabila digunakan pada contoh input, output sepadan dengan yang dikehendaki format:

232
0.18
1237875192
4.58
0
1.2345

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencetak Doubles dalam Java dengan Pemformatan Tepat, Menghapuskan Sifar Jejak yang Tidak Diperlukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn