Rumah >Java >javaTutorial >Bagaimana untuk Mengelakkan Ralat Ketepatan dalam Java Double Aritmetik?
Cara Menghapuskan Isu Ketepatan dengan Java Double Aritmetik
Dalam senario tertentu, aritmetik titik terapung di Jawa boleh membawa kepada isu pembundaran yang tidak dijangka, seperti seperti dalam contoh penolakan yang disediakan:
double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d; double netToCompany = targetPremium.doubleValue() - tempCommission; double dCommission = request.getPremium().doubleValue() - netToCompany;
Di sini, hasil yang diingini untuk dCommission ialah 877.85, tetapi ia sebaliknya dikira sebagai 877.8499999999999. Percanggahan ini timbul disebabkan oleh pengehadan ketepatan dalam aritmetik titik terapung.
Untuk menyelesaikan isu ini, penyelesaian optimum ialah menggunakan kelas java.math.BigDecimal. BigDecimal menawarkan pengiraan yang tepat dan mengawal ketepatan aritmetik titik terapung dengan berkesan. Begini cara anda boleh melaksanakannya dalam contoh yang diberikan:
import java.math.BigDecimal; BigDecimal premium = BigDecimal.valueOf("1586.6"); BigDecimal netToCompany = BigDecimal.valueOf("708.75"); BigDecimal commission = premium.subtract(netToCompany); System.out.println(commission + " = " + premium + " - " + netToCompany);
Kod ini menghasilkan output yang diingini:
877.85 = 1586.6 - 708.75
Dengan menggunakan BigDecimal, anda memastikan pengiraan yang tepat tanpa menjejaskan ketepatan.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat Ketepatan dalam Java Double Aritmetik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!