Mengelakkan Ralat Ketepatan Titik Terapung dengan Terapung dan Beregu di Jawa
Di Jawa, operasi yang melibatkan nombor titik terapung (terapung dan berganda) boleh membawa kepada ralat ketepatan. Ralat ini timbul kerana apungan dan gandaan mewakili nombor dalam bentuk binari, yang tidak memberikan perwakilan tepat untuk semua nilai perpuluhan.
Pertimbangkan kod berikut:
for (float value = 0.0f; value < 1.0f; value += 0.1f) System.out.println(value);
Sebaliknya daripada nilai yang dijangkakan, output memaparkan kenaikan 0.1 dengan sedikit peningkatan ralat:
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.70000005 0.8000001 0.9000001
Mengatasi Ralat Ketepatan
Untuk mengelakkan isu ini, pertimbangkan pendekatan berikut:
BigDecimal step = new BigDecimal("0.1"); for (BigDecimal value = BigDecimal.ZERO; value.compareTo(BigDecimal.ONE) < 0; value = value.add(step)) { System.out.println(value); }
Kod ini akan mewakili dan menambah nilai dengan tepat sebanyak 0.1, mengelakkan pengumpulan ralat ketepatan.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat Ketepatan Titik Terapung di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!