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

java.math.BigDecimal的用法及加減乘除計算

 更新時間:2023年05月29日 11:03:16   作者:隨波逐流baby  
這篇文章主要介紹了java.math.BigDecimal的用法及加減乘除計算,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java.math.BigDecimal及加減乘除計算

BigDecimal簡介

  • BigDecimal用來對需要更大或更小的數(shù)進(jìn)行任意精度的運算。
  • 在需要精確的小數(shù)計算時再使用BigDecimal,BigDecimal的性能比double和float差,在處理龐大,復(fù)雜的運算時尤為明顯。故一般精度的計算沒必要使用BigDecimal。
  • 盡量使用參數(shù)類型為String的構(gòu)造函數(shù)。
  • BigDecimal都是不可變的(immutable)的, 在進(jìn)行每一次四則運算時,都會產(chǎn)生一個新的對象 ,所以在做加減乘除運算時要記得要保存操作后的值。

BigDecimal構(gòu)造方法

  • BigDecimal(BigInteger val)

將 BigInteger轉(zhuǎn)換成 BigDecimal

  • BigDecimal(char[] in)

一個轉(zhuǎn)換的字符數(shù)組表示 BigDecimal成 BigDecimal ,接受字符作為的相同序列 BigDecimal(String)構(gòu)造

  • BigDecimal(double val)

將 double轉(zhuǎn)換為 BigDecimal ,這是 double的二進(jìn)制浮點值的精確十進(jìn)制表示

  • BigDecimal(int val)

將 int成 BigDecimal

  • BigDecimal(long val)

將 long成 BigDecimal

  • BigDecimal(String val)

將BigDecimal的字符串表示 BigDecimal轉(zhuǎn)換為 BigDecimal

BigDecimal 常用方法 加減乘除運算

BigDecimal a = new BigDecimal(6);
BigDecimal b = new BigDecimal(5);
a.add(b); ?//a+b ?加
a.subtract(b); // a-b 減
a.multiply(b); // a*b 乘
a.divide(b);// a/b 除
a.doubleValue();//轉(zhuǎn)換成雙精度 double類型
a.floatValue(); //轉(zhuǎn)換成單精度 float類型
a.longValue(); //轉(zhuǎn)換成長整形 long 類型
a.intValue(); ?//轉(zhuǎn)換成整形 int 類型
a.pow(3);//a的3次方
a.abs();//a的絕對值
a.negate();//a的負(fù)數(shù)

BigDecimal數(shù)值比較

BigDecimal a = new BigDecimal(6);
int i = a.compareTo(BigDecimal.ZERO); //和0做比較
i==-1;//表示a小于0
i==0;//表示a=0
i==1;//表示a大于0
boolean b1 = a.subtract(b).compareTo(BigDecimal.ZERO) > 0;//判斷a-b是否大于0

BigDecimal常見異常

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result。

原因:

JAVA中如果用BigDecimal做除法的時候一定要在divide方法中傳遞第二個參數(shù),定義精確到小數(shù)點后幾位,否則在不整除的情況下,結(jié)果是無限循環(huán)小數(shù)時,就會拋出以上異常。

解決辦法:

a.divide(b,4,RoundingMode.HALF_UP));

第二個參數(shù)是保留小數(shù)位數(shù)

第三個代表模式

模式:

  • ROUND_UP 始終對前一位加1 只入不舍
  • ROUND_DOWN 始終不對小數(shù)進(jìn)行改變 只舍不入
  • ROUND_CEILING 如果 BigDecimal 為正,則舍入行為與 ROUND_UP 相同;如果為負(fù),則舍入行為與 ROUND_DOWN 相同。
  • ROUND_FLOOR如果 BigDecimal 為正,則舍入行為與 ROUND_DOWN 相同;如果為負(fù),則舍入行為與 ROUND_UP 相同。
  • ROUND_HALF_UP 四舍五入
  • ROUND_HALF_DOWN 五舍六入
  • ROUND_HALF_EVEN 如果舍棄部分左邊的數(shù)字為奇數(shù),則舍入行為與 ROUND_HALF_UP 相同;如果為偶數(shù),則舍入行為與 ROUND_HALF_DOWN 相同。

心得

BigDecimal 主要用來操作(大)浮點數(shù),BigInteger 主要用來操作大整數(shù)(超過 long 類型)。

BigDecimal 的實現(xiàn)利用到了 BigInteger, 所不同的是 BigDecimal 加入了小數(shù)位的概念。

java.math.BigDecimal 比較大小

BigDecimal a = new BigDecimal (101);
BigDecimal b = new BigDecimal (111);
//使用compareTo方法比較
//注意:a、b均不能為null,否則會報空指針
if(a.compareTo(b) == -1){
    System.out.println("a小于b");
}
if(a.compareTo(b) == 0){
    System.out.println("a等于b");
}
if(a.compareTo(b) == 1){
    System.out.println("a大于b");
}
if(a.compareTo(b) > -1){
    System.out.println("a大于等于b");
}
if(a.compareTo(b) < 1){
    System.out.println("a小于等于b");
}

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot實現(xiàn)國際化i18n詳解

    SpringBoot實現(xiàn)國際化i18n詳解

    國際化(Internationalization,簡稱i18n)是指在軟件應(yīng)用中支持多種語言和文化的能力,本文將介紹如何在Spring?Boot應(yīng)用中實現(xiàn)國際化,需要的可以參考下
    2024-12-12
  • Spring Boot項目中jar包在服務(wù)器上啟動的正確姿勢

    Spring Boot項目中jar包在服務(wù)器上啟動的正確姿勢

    這篇文章主要給大家介紹了關(guān)于Spring Boot項目中jar包在服務(wù)器上啟動的正確姿勢,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • mybatis?foreach?list特殊處理方式

    mybatis?foreach?list特殊處理方式

    這篇文章主要介紹了mybatis?foreach?list特殊處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot 使用 Ehcache 作為緩存的操作方法

    SpringBoot 使用 Ehcache 作為緩存的操作方法

    這篇文章主要介紹了SpringBoot 如何使用 Ehcache 作為緩存,我們通過添加 Ehcache 依賴、創(chuàng)建 Ehcache 配置文件并在 Spring Boot 應(yīng)用程序的配置文件中啟用 Ehcache 緩存,來配置 Ehcache 緩存,需要的朋友可以參考下
    2023-06-06
  • springboot整合httpClient代碼實例

    springboot整合httpClient代碼實例

    這篇文章主要介紹了springboot整合httpClient代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12
  • Java?BeanUtils?類作用、語法與示例詳解

    Java?BeanUtils?類作用、語法與示例詳解

    BeanUtils是Apache?Commons和Spring?Framework提供的工具類,主要用于簡化JavaBean的操作,接下來通過本文給大家介紹Java?BeanUtils?類作用、語法與示例詳解,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • 關(guān)于Java中的頂層類修飾問題

    關(guān)于Java中的頂層類修飾問題

    這篇文章主要介紹了關(guān)于Java中的頂層類修飾問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Spring Cloud Gateway 服務(wù)網(wǎng)關(guān)快速實現(xiàn)解析

    Spring Cloud Gateway 服務(wù)網(wǎng)關(guān)快速實現(xiàn)解析

    這篇文章主要介紹了Spring Cloud Gateway 服務(wù)網(wǎng)關(guān)快速實現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Java建造者設(shè)計模式詳解

    Java建造者設(shè)計模式詳解

    這篇文章主要為大家詳細(xì)介紹了Java建造者設(shè)計模式,對建造者設(shè)計模式進(jìn)行分析理解,感興趣的小伙伴們可以參考一下
    2016-02-02
  • 簡單理解java泛型的本質(zhì)(非類型擦除)

    簡單理解java泛型的本質(zhì)(非類型擦除)

    泛型在java中有很重要的地位,在面向?qū)ο缶幊碳案鞣N設(shè)計模式中有非常廣泛的應(yīng)用。泛型是參數(shù)化類型的應(yīng)用,操作的數(shù)據(jù)類型不限定于特定類型,可以根據(jù)實際需要設(shè)置不同的數(shù)據(jù)類型,以實現(xiàn)代碼復(fù)用。下面小編來簡單講一講泛型
    2019-05-05

最新評論

陆河县| 宜兴市| 衢州市| 晋州市| 五大连池市| 八宿县| 桑日县| 墨玉县| 浦北县| 齐齐哈尔市| 台中市| 黄陵县| 郎溪县| 阜平县| 莱芜市| 莎车县| 桑植县| 女性| 濉溪县| 武乡县| 吉隆县| 房产| 望都县| 井冈山市| 通城县| 麻城市| 巨鹿县| 保定市| 台安县| 宿迁市| 鄄城县| 将乐县| 南开区| 长治县| 精河县| 安宁市| 重庆市| 视频| 阜康市| 东方市| 绥棱县|