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

java中BigDecimal類型比較大小和絕對值計算方式

 更新時間:2023年07月13日 16:11:46   作者:別團(tuán)等shy哥發(fā)育  
這篇文章主要介紹了java中BigDecimal類型比較大小和絕對值計算方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

BigDecimal類型比較大小和絕對值計算

涉及到BigDecimal類型的比較,最好使用compareTo()方法,不要用equals()方法(除非對精度有要求)。

關(guān)鍵方法

修飾符方法描述
BigDecimalcompareTo(BigDecimal val)將此 BigDecimal與指定的BigDecimal進(jìn)行 比較,小于返回-1,等于返回0,大于返回1

代碼測試

import java.math.BigDecimal;
//臨時測試類
public class CalculateTest {
    private static BigDecimal X=new BigDecimal("0.4");
    private static BigDecimal Y=new BigDecimal("0.5");
    private static BigDecimal Z=new BigDecimal("0.6");
    private static BigDecimal T=new BigDecimal("0.4");
    public static void main(String[] args) {
        System.out.println(X.compareTo(Y));
        System.out.println(Y.compareTo(X));
        System.out.println(X.compareTo(T));
        if(X.compareTo(Y)==-1){ //小于
            System.out.println(X+"小于"+Y);
        }
        if(Y.compareTo(X)==1){  //大于
            System.out.println(Y+"大于"+X);
        }
        if(X.compareTo(T)==0){  //等于
            System.out.println(X+"等于"+T);
        }
        if(Z.compareTo(Y)>-1){//大于等于
            System.out.println(Z+"大于等于"+Y);
        }
        if(X.compareTo(Y)<1){//小于等于
            System.out.println(X&#43;&#34;小于等于&#34;&#43;Y);
        }
        //BigDecimal絕對值計算
        System.out.println(X.subtract(Y).abs());
    }
}

運行結(jié)果:

-1
1
0
0.4小于0.5
0.5大于0.4
0.4等于0.4
0.6大于等于0.5
0.4小于等于0.5
0.1

將equals()方法和compareTo()作比較

    BigDecimal a&#61;new BigDecimal(&#34;0.1&#34;);
        BigDecimal b&#61;new BigDecimal(&#34;0.100&#34;);
        System.out.println(a.equals(b));
        System.out.println(a.compareTo(b));

運行結(jié)果:

false
0

我們發(fā)現(xiàn)兩個的數(shù)值是一樣的,只是精度不同,equals方法判斷不相等,但是compareTo方法判斷結(jié)果為相等,所以equals方法會考慮精度,但compareTo方法不會。

常用的BigDecimal的定義和用法

最近涉及到浮點數(shù)金額的一個運算,為了不失精度,想到了之前刷題用過的BigDecimal,也借此對它進(jìn)行一個簡單的復(fù)習(xí)。

Java在java.math包中提供的API類BigDecimal對超過16位有效位的數(shù)進(jìn)行精確的運算。雙精度浮點型變量double可以處理16位有效數(shù)。

在實際應(yīng)用中,需要對更大或者更小的數(shù)進(jìn)行運算和處理。float和double只能用來做科學(xué)計算或者是工程計算,在商業(yè)計算中用java.math.BigDecimal更為精準(zhǔn)。

BigDecimal創(chuàng)建的是對象,我們不能使用傳統(tǒng)的 +、-、*、/ 等算術(shù)運算符直接對其對象進(jìn)行數(shù)學(xué)運算,而必須調(diào)用其相對應(yīng)的方法。方法中的參數(shù)也必須是BigDecimal的對象。

BigDecimal在計算中體現(xiàn)出來的精準(zhǔn)度

BigDecimal的用法:

1.BigDecimal有4個構(gòu)造方法

  • BigDecimal(int) 創(chuàng)建一個具有參數(shù)所指定整數(shù)值的對象。
  • BigDecimal(double) 創(chuàng)建一個具有參數(shù)所指定雙精度值的對象。(不建議采用)
  • BigDecimal(long) 創(chuàng)建一個具有參數(shù)所指定長整數(shù)值的對象。
  • BigDecimal(String) 創(chuàng)建一個具有參數(shù)所指定以字符串表示的數(shù)值的對象(優(yōu)先級最高)

2.BigDecimal常用的加減乘除運算

public BigDecimal add(BigDecimal value);??//加法
public BigDecimal subtract(BigDecimal value);??//減法
public BigDecimal multiply(BigDecimal value);??//乘法
public BigDecimal divide(BigDecimal value);?//除法

3.BigDecimal常用的比較大小方法

(int compareTo(Object o)):

BigDecimal的equals方法當(dāng)精度不一樣的時候也當(dāng)做不相等,而compareTo方法卻可以忽略精度的不同,只比較數(shù)值是否相同。

BigDecimal的compareTo()方法進(jìn)行的是值比較,返回值為-1,0,1:

  • num1<num2, 返回-1
  • num1=num2,返回0
  • num1>num2, 返回1

4.在java中判斷一個BigDecimal的值和0比較

int i=num.compareTo(BigDecimal.ZERO);

根據(jù) i 的值是 -1 or 0 or 1,即可判斷 小于 or 等于 or 大于關(guān)系

boolean flag = num.equals(BigDecimal.ZERO)

直接根據(jù) flag 的 true、false 進(jìn)行判斷

總結(jié)

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

相關(guān)文章

  • Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀

    Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀

    這篇文章主要介紹了Java網(wǎng)絡(luò)編程之UDP協(xié)議詳細(xì)解讀,UDP協(xié)議全稱是用戶數(shù)據(jù)報協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無連接的協(xié)議,在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層,需要的朋友可以參考下
    2023-12-12
  • Fluent Mybatis學(xué)習(xí)之Update語法實踐

    Fluent Mybatis學(xué)習(xí)之Update語法實踐

    Fluent MyBatis是一個MyBatis的增強工具,沒有對mybatis做任何修改。本篇文章將詳細(xì)介紹對Fluent Mybatis中的update語法進(jìn)行驗證。代碼具有一定價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-11-11
  • MySQL中沒有MVCC機(jī)制的影響分析與替代方案

    MySQL中沒有MVCC機(jī)制的影響分析與替代方案

    本文深入探討了如果 MySQL 中沒有多版本并發(fā)控制(MVCC)機(jī)制會帶來什么影響,分析了各種并發(fā)問題,提供了替代解決方案,并通過代碼示例和流程圖進(jìn)行詳細(xì)說明,需要的朋友可以參考下
    2025-10-10
  • java管道piped輸入流與輸出流應(yīng)用場景案例分析

    java管道piped輸入流與輸出流應(yīng)用場景案例分析

    這篇文章主要介紹了java管道流PipedInputStream與PipedOutputStream(輸入流與輸出流)的應(yīng)用場景案例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • 一篇文章帶你了解一些Java反射的學(xué)習(xí)記錄

    一篇文章帶你了解一些Java反射的學(xué)習(xí)記錄

    java反射機(jī)制是一個很好用的東西,用它可以解決很多死的東西,因為反射機(jī)制的靈活行很大,有了他,我們就不要花太多的時間來寫操做數(shù)據(jù)庫的代碼了,這個可以很大的減少開發(fā)時間,而且代碼的可讀性好
    2021-09-09
  • java 如何調(diào)用Python文件包括傳參

    java 如何調(diào)用Python文件包括傳參

    這篇文章主要介紹了java 調(diào)用Python文件包括傳參的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • MyBatis-Plus實現(xiàn)公共字段自動填充功能詳解

    MyBatis-Plus實現(xiàn)公共字段自動填充功能詳解

    在開發(fā)中經(jīng)常遇到多個實體類有共同的屬性字段,這些字段屬于公共字段,也就是很多表中都有這些字段,能不能對于這些公共字段在某個地方統(tǒng)一處理,來簡化開發(fā)呢?MyBatis-Plus就提供了這一功能,本文就來為大家詳細(xì)講講
    2022-08-08
  • Spring?BOOT?AOP基礎(chǔ)應(yīng)用教程

    Spring?BOOT?AOP基礎(chǔ)應(yīng)用教程

    這篇文章主要介紹了Spring?BOOT?AOP的使用,文章從相關(guān)問題展開全文內(nèi)容詳情,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • spring如何使用xml裝配bean

    spring如何使用xml裝配bean

    這篇文章主要介紹了spring如何使用xml裝配bean,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • intelliJ IDEA 多行選中相同內(nèi)容的快捷鍵分享

    intelliJ IDEA 多行選中相同內(nèi)容的快捷鍵分享

    這篇文章主要介紹了intelliJ IDEA 多行選中相同內(nèi)容的快捷鍵分享,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02

最新評論

柘城县| 清水县| 南平市| 茂名市| 天峻县| 措勤县| 丹东市| 临朐县| 炎陵县| 大冶市| 侯马市| 广灵县| 洛南县| 苍山县| 法库县| 苍山县| 香港 | 西平县| 灵丘县| 开江县| 象州县| 绥滨县| 金门县| 阳西县| 普定县| 东源县| 樟树市| 抚顺县| 罗平县| 夏邑县| 汽车| 攀枝花市| 田林县| 封开县| 阿勒泰市| 榆林市| 芒康县| 建宁县| 宁武县| 盈江县| 靖江市|