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

Bagaimanakah Saya Boleh Membandingkan Nilai Berganda dengan Tepat di Jawa?

Linda Hamilton
Lepaskan: 2024-12-27 18:57:21
asal
636 orang telah melayarinya

How Can I Accurately Compare Double Values in Java?

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

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

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!

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