Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mencetak Doubles dalam Java dengan Pemformatan Tepat, Menghapuskan Sifar Jejak yang Tidak Diperlukan?
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:
The output yang dikehendaki akan jadi:
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:
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!