Rumah >Java >javaTutorial >Bagaimanakah Kami Boleh Memformat Nombor Titik Terapung dengan Tepat untuk Menghapuskan Sifar yang Tidak Diperlukan?
Apabila mewakili data berangka, mungkin sukar untuk mengimbangi ketepatan dan kebolehbacaan, terutamanya apabila berurusan dengan terapung- nombor titik. Isu timbul apabila mencetak nombor ini, yang selalunya mengakibatkan sifar tertinggal atau tempat perpuluhan yang tidak diperlukan.
Masalah:
Pertimbangkan untuk menggunakan jenis dua kali untuk mewakili semua nilai berangka, termasuk integer. Walau bagaimanapun, mencetak integer pseudo ini sebagai beregu mengakibatkan masalah mengekori sifar untuk nilai yang kecil.
Output yang Diingini:
Matlamatnya adalah untuk mencetak dua kali dalam keadaan bersih format, menekan sifar mengekor untuk nilai integer sambil mengekalkan ketepatan untuk sebenar berganda.
Penyelesaian:
Untuk mengendalikan situasi ini dengan berkesan, fungsi pemformatan tersuai boleh dilaksanakan yang memanfaatkan fakta bahawa dua kali ganda boleh mewakili integer dengan tepat sehingga 253. Fungsi, dinamakan fmt(double d), berfungsi seperti berikut:
if (d == (long) d) { return String.format("%d", (long) d); } else { return String.format("%s", d); }
Ini membolehkan mencetak pseudo-integer sebagai integer dengan menggunakan penentu format %d, manakala gandaan sebenar mengekalkan ketepatannya menggunakan %s penentu.
Contoh Output:
Fungsi pemformatan tersuai menghasilkan output berikut:
232 0.18 1237875192 4.58 0 1.2345
Pengoptimuman Prestasi:
Dengan mengelakkan manipulasi rentetan, fungsi fmt memastikan prestasi yang cekap. Sebaliknya, penyelesaian yang bergantung pada pemangkasan sifar akan dikenakan penalti prestasi yang ketara disebabkan oleh operasi rentetan.
Atas ialah kandungan terperinci Bagaimanakah Kami Boleh Memformat Nombor Titik Terapung dengan Tepat untuk Menghapuskan Sifar yang Tidak Diperlukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!