欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

BigDecimal簡介

  • BigDecimal用來對需要更大或更小的數(shù)進行任意精度的運算。
  • 在需要精確的小數(shù)計算時再使用BigDecimal,BigDecimal的性能比double和float差,在處理龐大,復雜的運算時尤為明顯。故一般精度的計算沒必要使用BigDecimal。
  • 盡量使用參數(shù)類型為String的構(gòu)造函數(shù)。
  • BigDecimal都是不可變的(immutable)的, 在進行每一次四則運算時,都會產(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的二進制浮點值的精確十進制表示

  • 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的負數(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ù)進行改變 只舍不入
  • ROUND_CEILING 如果 BigDecimal 為正,則舍入行為與 ROUND_UP 相同;如果為負,則舍入行為與 ROUND_DOWN 相同。
  • ROUND_FLOOR如果 BigDecimal 為正,則舍入行為與 ROUND_DOWN 相同;如果為負,則舍入行為與 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)文章

  • Java編寫通用的導出任何對象列表數(shù)據(jù)到excel的工具類

    Java編寫通用的導出任何對象列表數(shù)據(jù)到excel的工具類

    在工作中經(jīng)常會遇到列表數(shù)據(jù)的導出,每次需要的時候都要去開發(fā)一次,且數(shù)據(jù)不斷在變化,所以本文將利用Java編寫一個工具類可以導出任何對象列表數(shù)據(jù)到excel,希望對大家有所幫助
    2024-12-12
  • Spring MVC注解式開發(fā)示例完整過程

    Spring MVC注解式開發(fā)示例完整過程

    這篇文章主要介紹了Spring MVC注解式開發(fā)示例完整過程,MVC注解式開發(fā)即處理器基于注解的類開發(fā),對于每一個定義的處理器,無需在xml中注冊,只需在代碼中通過對類與方法的注解,即可完成注冊
    2023-02-02
  • Sentinel熔斷規(guī)則原理示例詳解分析

    Sentinel熔斷規(guī)則原理示例詳解分析

    這篇文章主要介紹了Sentinel熔斷規(guī)則,采用了示例代碼的方式對Sentinel熔斷規(guī)則進行了詳細的分析,以便廣大讀者朋友們更易理解,有需要的朋友可以參考下
    2021-09-09
  • Java RabbitMQ 中的消息長期不消費會過期嗎

    Java RabbitMQ 中的消息長期不消費會過期嗎

    RabbitMQ支持消息的過期時間,在消息發(fā)送時可以進行指定。 RabbitMQ支持隊列的過期時間,從消息入隊列開始計算,只要超過了隊列的超時時間配置,那么消息會自動的清除
    2021-09-09
  • 深入理解java代碼實現(xiàn)分治算法

    深入理解java代碼實現(xiàn)分治算法

    分治算法是一種遞歸算法,它將問題劃分為幾個獨立的子問題,然后遞歸地解決這些子問題,最后將子問題的解合并起來得到原問題的解,本文詳細的介紹java分治算法,感興趣的可以了解一下
    2023-09-09
  • 深入Java Final

    深入Java Final

    本篇文章,小編將為大家介紹Java Final,有需要的朋友可以參考一下
    2013-04-04
  • 一文詳解Java中多進程與多線程處理

    一文詳解Java中多進程與多線程處理

    在Java編程中,多進程和多線程是兩種常見的并發(fā)編程技術(shù),用于提高程序的執(zhí)行效率和響應(yīng)速度,本文將為大家簡單介紹一下多進程與多線程處理的相關(guān)知識,希望對大家有所幫助
    2025-01-01
  • RocketMQ消息發(fā)送與消息類別詳解

    RocketMQ消息發(fā)送與消息類別詳解

    這篇文章主要介紹了RocketMQ消息發(fā)送與消息類別詳解,事務(wù)消息的生產(chǎn)者執(zhí)行本地事務(wù),并根據(jù)事務(wù)執(zhí)行的結(jié)果選擇是否提交或回滾事務(wù),
    如果事務(wù)執(zhí)行成功并選擇提交事務(wù),則產(chǎn)生注冊成功消息,進入下一步,需要的朋友可以參考下
    2023-09-09
  • 深入淺析Spring-boot-starter常用依賴模塊

    深入淺析Spring-boot-starter常用依賴模塊

    這篇文章主要介紹了Spring-boot-starter常用依賴模塊及spring boot的兩大優(yōu)點,需要的朋友可以參考下
    2018-01-01
  • Nacos心跳時間配置及服務(wù)快速上下線方式

    Nacos心跳時間配置及服務(wù)快速上下線方式

    這篇文章主要介紹了Nacos心跳時間配置及服務(wù)快速上下線方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論