首頁 > Java > java教程 > 淺談Java double 相乘的結果偏差小問題

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

高洛峰
發布: 2017-01-23 16:06:58
原創
1618 人瀏覽過

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

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中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板