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

Java用BigDecimal解決double類型相減時可能存在的誤差

 更新時間:2020年05月15日 10:35:59   作者:liuhmmjj  
這篇文章主要介紹了Java用BigDecimal解決double類型相減時可能存在的誤差,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

double類型的兩個數相減可能存在誤差,比如System.out.println(2099 - 1999.9);的結果為99.09999999999991

可以用BigDecimal解決:

public class TestDouble {
  //兩個Double數相減
  public static Double sub(Double d1, Double d2) {
    if (d1 == null || d2 == null) {
      return null;
    }
    BigDecimal b1 = new BigDecimal(d1.toString());
    BigDecimal b2 = new BigDecimal(d2.toString());
    return b1.subtract(b2).doubleValue();
  }
 
  //兩個Double數相加
  public static Double add(Double d1, Double d2) {
    if (d1 == null || d2 == null) {
      return null;
    }
    BigDecimal b1 = new BigDecimal(d1.toString());
    BigDecimal b2 = new BigDecimal(d2.toString());
    return b1.add(b2).doubleValue();
  }
 
  //兩個Double數相除,并保留scale位小數
  public static Double div(Double d1, Double d2, int scale) {
    if (d1 == null || d2 == null || scale < 0) {
      return null;
    }
    BigDecimal b1 = new BigDecimal(d1.toString());
    BigDecimal b2 = new BigDecimal(d2.toString());
    return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
  }
 
  // 兩個Double數相乘
  public static Double mul(Double d1, Double d2) {
    if (d1 == null || d2 == null) {
      return null;
    }
    BigDecimal b1 = new BigDecimal(d1.toString());
    BigDecimal b2 = new BigDecimal(d2.toString());
    return b1.multiply(b2).doubleValue();
  }
 
  /**
   * 遇到.5的情況時往上近似
   *
   * @param d
   * @param scale
   * @return
   */
  public static Double setDoubleScale(Double d, int scale) {
    if (d == null || scale < 0) {
      return null;
    }
    BigDecimal b = new BigDecimal(d);
    return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
  }
 
  public static void main(String[] args) {
    Double d1 = 2099d;
    Double d2 = 1999.999;
    System.out.println(d1 - d2);
    System.out.println(sub(d1, d2));
    System.out.println("------------------------------------");
    System.out.println(d1 * d2);
    System.out.println(mul(d1, d2));
    System.out.println("------------------------------------");
    System.out.println(d1/d2);
    System.out.println(div(d1,d2,4));
 
  }
}

結果:

99.00099999999998
99.001
------------------------------------
4197997.901
4197997.901
------------------------------------
1.0495005247502625
1.0495

到此這篇關于Java用BigDecimal解決double類型相減時可能存在的誤差的文章就介紹到這了,更多相關Java double相減誤差內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MyBatis-Plus攔截器實現數據權限控制的示例

    MyBatis-Plus攔截器實現數據權限控制的示例

    本文主要介紹了MyBatis-Plus攔截器實現數據權限控制的示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • Feign調用傳輸文件異常的解決

    Feign調用傳輸文件異常的解決

    這篇文章主要介紹了Feign調用傳輸文件異常的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • IDEA無法識別SpringBoot項目的簡單解決辦法

    IDEA無法識別SpringBoot項目的簡單解決辦法

    今天使用idea的時候,遇到idea無法啟動springboot,所以這篇文章主要給大家介紹了關于IDEA無法識別SpringBoot項目的簡單解決辦法,需要的朋友可以參考下
    2023-08-08
  • jar命令的用法詳解

    jar命令的用法詳解

    這篇文章主要介紹了jar命令的用法,非常實用,需要的朋友可以參考下
    2014-08-08
  • Java編寫的24點紙牌游戲

    Java編寫的24點紙牌游戲

    這篇文章主要介紹了Java編寫的24點紙牌游戲的相關資料,需要的朋友可以參考下
    2015-03-03
  • Java動態(tài)獲取實現類的方式詳解

    Java動態(tài)獲取實現類的方式詳解

    這篇文章主要介紹了Java動態(tài)獲取實現類的方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或工作有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧
    2024-01-01
  • Spring gateway + Oauth2實現單點登錄及詳細配置

    Spring gateway + Oauth2實現單點登錄及詳細配置

    gateway是基于 WebFlux的響應式編程框架,所以在使用securityConfig時采用的注解是@EnableWebFluxSecurity,接下來通過本文給大家介紹Spring gateway + Oauth2實現單點登錄及詳細配置,感興趣的朋友一起看看吧
    2021-09-09
  • Java如何替換第一個和最后一個字符串

    Java如何替換第一個和最后一個字符串

    這篇文章主要介紹了Java如何替換第一個和最后一個字符串的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring Boot 自定義 Shiro 過濾器無法使用 @Autowired問題及解決方法

    Spring Boot 自定義 Shiro 過濾器無法使用 @Autowired問題及解決方法

    這篇文章主要介紹了Spring Boot 自定義 Shiro 過濾器無法使用 @Autowired問題及解決方法 ,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • 解決idea找不到類could not find artifact問題

    解決idea找不到類could not find artifact問題

    本文總結了解決Java項目中找不到類的問題的常見解決方案,包括刷新Maven項目、清理IDEA緩存、Maven Clean Install、重新Package、解決依賴沖突和手動導入依賴包等方法
    2025-01-01

最新評論

沙雅县| 定南县| 红河县| 天祝| 上饶市| 历史| 克东县| 三原县| 曲沃县| 安丘市| 思南县| 屏东市| 鄂托克旗| 麻城市| 元江| 宁德市| 陇南市| 安西县| 泽库县| 汪清县| 岑溪市| 资阳市| 谷城县| 临邑县| 旌德县| 随州市| 大庆市| 扶余县| 吴忠市| 什邡市| 巴南区| 衡阳县| 阿克| 兖州市| 缙云县| 门头沟区| 澎湖县| 金溪县| 滦南县| 那坡县| 柳河县|