Mengatasi Percanggahan Perbandingan Berganda di Jawa
Membandingkan dua nilai berganda dalam Java menggunakan semakan kesamaan mudah boleh membawa kepada hasil yang tidak dijangka disebabkan oleh faktor yang wujud. had aritmetik titik terapung. Untuk mengatasi cabaran ini, pendekatan alternatif diperlukan.
Dalam pelaksanaan biasa, perbandingan mudah dua beregu, seperti (a - b) == 1.0, mungkin kembali palsu walaupun perbezaan yang dijangkakan diabaikan, kerana pengiraan titik terapung mungkin memperkenalkan ralat pembundaran.
Strategi yang disyorkan untuk membandingkan dua kali ganda dengan lebih tepat ialah menggunakan kaedah Math.abs() untuk mengira perbezaan mutlak antara kedua-dua nilai dan kemudian tentukan sama ada perbezaan itu berada dalam toleransi yang boleh diterima.
Sebagai contoh, coretan kod berikut menggunakan pendekatan ini untuk membandingkan nilai berganda a dan b:
double a = 1.000001; double b = 0.000001; double tolerance = 0.000001; boolean areEqual = (Math.abs(a - b) <= tolerance); System.out.println(areEqual); // Prints true
Dengan menetapkan nilai toleransi yang sesuai, seperti 0.000001 dalam contoh ini, anda boleh menentukan sama ada perbezaan antara dua beregu itu cukup kecil untuk mempertimbangkannya sama untuk tujuan praktikal. Pendekatan ini membolehkan perbandingan nilai berganda yang lebih tepat dan konsisten, mengelakkan perangkap semakan kesaksamaan yang tepat.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Nilai Berganda dengan Tepat di Jawa untuk Mengelakkan Percanggahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!