激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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短视频在线视频 | 国产精品一区网站 | 国产欧美日韩在线播放 | 久久精品亚洲精品国产欧美kt∨ | 欧美三级短视频 | 成人短视频在线观看免费 | 日本中文不卡视频 | 内地av在线 | 成av在线 | 成人444kkkk在线观看 | 免费a级黄色毛片 | 99久久免费看精品国产一区 | 国产视频第一区 | 在线区| 久久久久中精品中文字幕19 | 国产精品久久久久久久四虎电影 | 一区国产在线观看 | 日韩精品一二区 | 国产成人精品区 | 欧美成人精品一级 | 成年毛片 | 手机免费看一级片 | 桥本有菜免费av一区二区三区 | 国产成人羞羞视频在线 | 斗罗破苍穹在线观看免费完整观看 | 久久综合久久精品 | 美女毛片在线观看 | 亚洲国产成人一区 | 视频一区二区久久 | 一级大片一级一大片 | 在线91视频| av在线免费网 | 粉嫩粉嫩一区二区三区在线播放 | 成人一级视频 | av在线播放亚洲 | 91九色网址 | 久久久久久久久久久久久九 | 成人做爽爽爽爽免费国产软件 | 99精品视频在线观看免费播放 |