java中的浮點數相加


      今天遇到一個比較有意思的問題,就是兩個浮點數相加怎么都得不到正確的答案,剛開始也很納悶,后來通過在網上找資料后,明白了原來浮點數用2進制進行加減的話確實是會出現這種情況的,也找到了解決辦法,所以記錄下來,也算是一個比較有意思的認識吧!

       首先我們來看看兩個帶小數的浮點數相加會是什么樣子的

package com.controller;

public class Test {
	public static void main(String[] args) {
	// TODO Auto-generated method stub
        double a = 418.48d;
        double b = 7121.88d;
        double c = a+b;
        System.out.println(c);
	}
}

 輸出結果為

7540.360000000001

 原因是浮點數的二進制相計算的時候會有一定的誤差,原因我們下次再深入探討,下面我們來看解決辦法

package com.controller;

import java.math.BigDecimal;

public class Test {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
        double a = 418.48d;
        double b = 7121.88d;
        BigDecimal a1 = new BigDecimal(String.valueOf(a));
        BigDecimal b1 = new BigDecimal(String.valueOf(b));
        BigDecimal c = a1.add(b1);
        System.out.println(c.doubleValue());
	}
}

 輸出結果為

7540.36

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM