Perbandingan Nilai Berganda dalam Java: Menangani Ralat Ketepatan
Membandingkan nilai berganda dalam Java boleh menjadi tugas yang sukar disebabkan kemungkinan ralat ketepatan. Perbandingan mudah, seperti yang ditunjukkan di bawah, mungkin membawa kepada hasil yang tidak dijangka:
double a = 1.000001; double b = 0.000001; boolean result = (a - b == 1.0); // False
Kod ini mencetak palsu kerana operasi tolak menghasilkan 0.9999999999999999, yang tidak sama dengan 1.0. Untuk mengatasi isu ini, kita memerlukan kaedah perbandingan yang lebih tepat.
Salah satu pendekatan ialah mengira perbezaan mutlak antara kedua-dua nilai dan membandingkannya dengan nilai toleransi yang kecil. Contohnya:
double c = Math.abs(a - b - 1.0); boolean result = (c <= 0.000001); // True
Kod ini memperkenalkan toleransi 0.000001, jadi selagi perbezaan mutlak antara c dan 1.0 berada dalam julat ini, perbandingan akan dinilai kepada benar. Kaedah Math.abs() memastikan bahawa nilai mutlak dipertimbangkan, tanpa mengambil kira sebarang perbezaan tanda.
Dengan menggunakan teknik ini, kita boleh mengambil kira kemungkinan ralat ketepatan dan melakukan perbandingan nilai berganda yang boleh dipercayai. Pendekatan ini amat berguna apabila bekerja dengan data titik terapung, di mana perbandingan kesaksamaan yang tepat tidak selalunya praktikal.
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Nilai Berganda dalam Java dan Mengelakkan Ralat Ketepatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!