最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中double類型運(yùn)算結(jié)果異常的解決方法

 更新時(shí)間:2016年12月13日 08:52:20   投稿:jingxian  
下面小編就為大家?guī)硪黄猨ava中double類型運(yùn)算結(jié)果異常的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

問題:

對兩個(gè)double類型的值進(jìn)行運(yùn)算,有時(shí)會出現(xiàn)結(jié)果值異常的問題。比如:

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中的簡單浮點(diǎn)數(shù)類型float和double不能夠進(jìn)行運(yùn)算,因?yàn)榇蠖鄶?shù)情況下是正常的,但是偶爾會出現(xiàn)如上所示的問題。這個(gè)問題其實(shí)不是JAVA的bug,因?yàn)橛?jì)算機(jī)本身是二進(jìn)制的,而浮點(diǎn)數(shù)實(shí)際上只是個(gè)近似值,所以從二進(jìn)制轉(zhuǎn)化為十進(jìn)制浮點(diǎn)數(shù)時(shí),精度容易丟失,導(dǎo)致精度下降。

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

double類型四則運(yùn)算例子:

1、相加

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、相減

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、相乘

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、相除

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參數(shù)為除不盡時(shí),指定精度。

以上這篇java中double類型運(yùn)算結(jié)果異常的解決方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Kafka 安裝與配置詳細(xì)過程

    Kafka 安裝與配置詳細(xì)過程

    本節(jié)詳細(xì)介紹 Kafka 運(yùn)行環(huán)境的搭建,為了節(jié)省篇幅,本節(jié)的內(nèi)容以 Linux CentOS 作為安裝演示的操作系統(tǒng),其他 Linux 系列的操作系統(tǒng)也可以參考本節(jié)的內(nèi)容,對Kafka 安裝與配置相關(guān)知識感興趣的朋友一起看看吧
    2021-11-11
  • Spring Boot 校驗(yàn)用戶上傳的圖片文件(兩種方式)

    Spring Boot 校驗(yàn)用戶上傳的圖片文件(兩種方式)

    圖片上傳是現(xiàn)代應(yīng)用中非常常見的一種功能,也是風(fēng)險(xiǎn)比較高的一個(gè)地方,惡意用戶可能會上傳一些病毒、木馬,本文給大家介紹兩種對圖片文件進(jìn)行校驗(yàn)的方法,感興趣的朋友一起看看吧
    2023-11-11
  • Java 基礎(chǔ)之內(nèi)部類詳解及實(shí)例

    Java 基礎(chǔ)之內(nèi)部類詳解及實(shí)例

    這篇文章主要介紹了 Java 基礎(chǔ)之內(nèi)部類詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 淺談Spring裝配Bean之組件掃描和自動裝配

    淺談Spring裝配Bean之組件掃描和自動裝配

    本篇文章主要介紹了淺談Spring裝配Bean之組件掃描和自動裝配,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • 利用Java簡單實(shí)現(xiàn)一個(gè)代碼行數(shù)統(tǒng)計(jì)器方法實(shí)例

    利用Java簡單實(shí)現(xiàn)一個(gè)代碼行數(shù)統(tǒng)計(jì)器方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于如何利用Java簡單實(shí)現(xiàn)一個(gè)代碼行數(shù)統(tǒng)計(jì)器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 關(guān)于JAVA_HOME路徑修改之后JDK的版本依然不更改的解決辦法

    關(guān)于JAVA_HOME路徑修改之后JDK的版本依然不更改的解決辦法

    今天小編就為大家分享一篇關(guān)于JAVA_HOME路徑修改之后JDK的版本依然不更改的解決辦法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • Spring之spring-context-indexer依賴詳解

    Spring之spring-context-indexer依賴詳解

    這篇文章主要介紹了Spring之spring-context-indexer依賴詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • idea鼠標(biāo)控制放大縮小的操作

    idea鼠標(biāo)控制放大縮小的操作

    這篇文章主要介紹了idea鼠標(biāo)控制放大縮小的操作教程,具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java設(shè)計(jì)日歷可視化的詳細(xì)步驟記錄

    java設(shè)計(jì)日歷可視化的詳細(xì)步驟記錄

    這篇文章主要給大家介紹了關(guān)于java設(shè)計(jì)日歷可視化的相關(guān)資料,通過自定義的CircleLabel類來突出顯示今天的日期,并使用BorderLayout布局管理窗口組件,文章詳細(xì)描述了各個(gè)類和方法的設(shè)計(jì)思想和實(shí)現(xiàn)邏輯,需要的朋友可以參考下
    2024-12-12
  • javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair 解決方法總結(jié)

    javax.net.ssl.SSLException: java.lang.RuntimeException: Coul

    這篇文章主要介紹了javax.net.ssl.SSLException: java.lang.RuntimeException: Could not generate DH keypair 解決方法,有需要的朋友們可以學(xué)習(xí)下。
    2019-08-08

最新評論

台中县| 托里县| 渝北区| 丹凤县| 梁山县| 花莲市| 鹤山市| 安吉县| 唐山市| 稻城县| 瓦房店市| 治多县| 宁远县| 项城市| 大安市| 瑞丽市| 南昌县| 张家界市| 乌兰浩特市| 敖汉旗| 宁阳县| 洞口县| 资溪县| 营口市| 阿拉善左旗| 平利县| 石首市| 金坛市| 中牟县| 安龙县| 云林县| 榆树市| 迁西县| 大宁县| 安图县| 密山市| 无为县| 定远县| 杂多县| 安吉县| 闽清县|