Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Membandingkan Nilai Berganda dengan Tepat di Jawa untuk Mengelakkan Percanggahan?

Bagaimanakah Saya Boleh Membandingkan Nilai Berganda dengan Tepat di Jawa untuk Mengelakkan Percanggahan?

Barbara Streisand
Lepaskan: 2024-12-13 21:08:34
asal
322 orang telah melayarinya

How Can I Accurately Compare Double Values in Java to Avoid Discrepancies?

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan