Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Membandingkan Nilai Berganda dengan Tepat di Jawa?
Membandingkan Nilai Berganda dengan Berkesan di Jawa
Di Jawa, membandingkan dua nilai berganda menggunakan operator kesamaan (==) boleh membawa kepada hasil yang tidak dijangka disebabkan oleh had ketepatan yang wujud bagi aritmetik titik terapung. Untuk mengatasinya, adalah penting untuk menggunakan pendekatan alternatif untuk membandingkan nilai berganda secara berkesan.
Pertimbangkan contoh berikut:
double a = 1.000001; double b = 0.000001; boolean result = (a - b) == 1.0;
Anehnya, perbandingan ini dinilai palsu, walaupun secara intuitif ia sepatutnya benar. Ini kerana operasi tolak (a - b) menghasilkan 0.9999999999999999, iaitu kurang sedikit daripada 1.0.
Untuk menangani isu ini, pendekatan yang lebih mantap ialah menggunakan margin ralat, atau delta, di mana nilai boleh dianggap sama. Satu cara untuk melaksanakan ini ialah menggunakan Math.abs():
double a = 1.000001; double b = 0.000001; double delta = 0.000001; boolean result = Math.abs(a - b - 1.0) <= delta;
Dalam kes ini, jika perbezaan mutlak antara (a - b) dan 1.0 adalah kurang daripada atau sama dengan delta yang dipratentukan 0.000001, perbandingan akan dinilai benar. Pendekatan ini membolehkan perbandingan yang lebih tepat sambil mengambil kira kemungkinan ralat ketepatan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Nilai Berganda dengan Tepat di Jawa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!