一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - java中double類型運算結果異常的解決方法

java中double類型運算結果異常的解決方法

2020-07-12 16:08jingxian JAVA教程

下面小編就為大家帶來一篇java中double類型運算結果異常的解決方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

問題:

對兩個double類型的值進行運算,有時會出現結果值異常的問題。比如:

java" id="highlighter_838968">
?
1
2
3
4
System.out.println(19.99+20);
  System.out.println(1.0-0.66);
  System.out.println(0.033*100);
  System.out.println(12.3/100);

輸出:

39.989999999999995
0.33999999999999997
3.3000000000000003
0.12300000000000001

解決方法:

Java中的簡單浮點數類型float和double不能夠進行運算,因為大多數情況下是正常的,但是偶爾會出現如上所示的問題。這個問題其實不是JAVA的bug,因為計算機本身是二進制的,而浮點數實際上只是個近似值,所以從二進制轉化為十進制浮點數時,精度容易丟失,導致精度下降。

要保證精度就要使用BigDecimal類,而且不能直接從double直接轉BigDecimal,要將double轉string再轉BigDecimal。也就是不能使用BigDecimal(double val) 方法,你會發現沒有效果。要使用BigDecimal(String val) 方法。具體例子如下所示。

double類型四則運算例子:

1、相加

?
1
2
3
4
5
public static double add(double a1, double b1) {
   BigDecimal a2 = new BigDecimal(Double.toString(a1));
   BigDecimal b2 = new BigDecimal(Double.toString(b1));
   return a2.add(b2).doubleValue();
  }

2、相減

?
1
2
3
4
5
public static double sub(double a1, double b1) {
   BigDecimal a2 = new BigDecimal(Double.toString(a1));
   BigDecimal b2 = new BigDecimal(Double.toString(b1));
   return a2.subtract(b2).doubleValue();
  }

3、相乘

?
1
2
3
4
5
public static double mul(double a1, double b1) {
   BigDecimal a2 = new BigDecimal(Double.toString(a1));
   BigDecimal b2 = new BigDecimal(Double.toString(b1));
   return a2.multiply(b2).doubleValue();
  }

4、相除

?
1
2
3
4
5
6
7
8
public static double div(double a1, double b1, int scale) {
  if (scale < 0) {
   throw new IllegalArgumentException("error");
  }
  BigDecimal a2 = new BigDecimal(Double.toString(a1));
  BigDecimal b2 = new BigDecimal(Double.toString(b1));
  return a2.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
 }

scale參數為除不盡時,指定精度。

以上這篇java中double類型運算結果異常的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产91精品久久久久久久 | 男女激情视频1000辣妞范 | 国产欧美视频一区二区三区 | 羞羞视频免费观 | 亚洲黄色片免费看 | 国产精品欧美日韩一区二区 | aⅴ导航站 | 色综合久久最新中文字幕 | 国产乱子伦真实china | 教师系列 大桥未久在线 | 久久精品熟女亚洲AV国产 | 8天堂资源在线官网 | 久久草福利自拍视频在线观看 | 五月天狠狠| 精东影业传媒全部作品 | 91天堂一区二区 | 国产一久久香蕉国产线看观看 | 免费一级夫妻a | 亚洲成人免费观看 | 蝴蝶传媒免费安装 | 91原创国产| 色姑娘久 | 三级伦理在线播放 | 网址在线观看你懂我意思吧免费的 | 亚洲第一色区 | 高清视频在线观看+免费 | 波多野结衣52部合集在线观看 | 羞羞答答免费人成黄页在线观看国产 | 视频在线观看高清免费 | 免费精品视频在线 | 人人爱操 | www.色姐姐| 精品无码国产污污污免费网站2 | 精品国产mmd在线观看 | 黑人巨大初黑人解禁作品 | 人与动人物aaaa | sxx免费看观看美女 sss亚洲国产欧美一区二区 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | 亚洲国产第一区二区香蕉日日 | 国产精品特黄毛片 | 欧美日本一区视频免费 |