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
Lepaskan: 2024-12-31 13:41:11
asal
623 orang telah melayarinya

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);
}
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan