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

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

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類型運算結果異常的解決方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青青青手机在线观看 | 韩国女主播在线大尺无遮挡 | 日日爱669| 人人做人人爽人人爱 | 99视频有精品视频免费观看 | 日韩一区二区三区四区不卡 | 国色天香视频完整版 | 欧美日韩精 | 99av麻豆 | 国产欧美日韩精品高清二区综合区 | 欧美日韩va | 69热视频| 丝袜兔女郎被啪在线观看91 | 无人区在线观看免费完整版免费 | tolove第一季动画在线看 | 国产一区二区视频在线播放 | 亚洲日日做天天做日日谢 | 午夜爱情动作片P | 午夜福到在线2019 | 久久伊人中文字幕有码 | 波多野结衣中文丝袜字幕 | 日本不卡在线一区二区三区视频 | 欧美亚洲一区二区三区在线 | 99热这里有免费国产精品 | 调教女高中生第3部分 | 日日爽日日操 | 国产九九视频在线观看 | 日本高清中文字幕一区二区三区 | 亚洲精品午夜级久久久久 | 91精品国产高清久久久久久io | 艾秋麻豆果冻剧传媒在线播放 | 久久人妻熟女中文字幕AV蜜芽 | 深夜在线影院 | zozo日本另类极品 | 美女扒开腿让男生桶爽漫画 | 性奶老妇 视频 | 免费大片a一级一级 | 国产v日韩v欧美v精品专区 | 日本一本草久p | 手机在线观看精品国产片 | 亚洲狠狠网站色噜噜 |