首頁  >  文章  >  Java  >  淺談Java double 相乘的結果偏差小問題

淺談Java double 相乘的結果偏差小問題

高洛峰
高洛峰原創
2017-01-23 16:06:581615瀏覽

看下面的一段程式碼的運作結果:

public class TestDouble {
 
public static void main(String[] args) {
 
double d =538.8;
 
System.out.println(d*100);
 
}

   

輸出結果很意外的不是53880 而是53879.99999999999的結果

538.8*10000 用100*100替換。

解決方法二:

public class TestDouble {
  public static void main(String[] args) {
   double d =538.8;  
   BigDecimal a1 = new BigDecimal(Double.toString(d));
   BigDecimal b1 = new BigDecimal(Double.toString(100)); 
   BigDecimal result = a1.multiply(b1);// 相乘结果
   System.out.println(result);
   BigDecimal one = new BigDecimal("1");
   double a = result.divide(one,2,BigDecimal.ROUND_HALF_UP).doubleValue();//保留1位数
   System.out.println(a);
  }
}

以上這篇淺談Java double 相乘的結果偏差小問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持PHP中文網。

更多淺談Java double 相乘的結果偏差小問題相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn