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

java中BigDecimal類型比較大小和絕對(duì)值計(jì)算方式

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

BigDecimal類型比較大小和絕對(duì)值計(jì)算

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

關(guān)鍵方法

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

代碼測(cè)試

import java.math.BigDecimal;
//臨時(shí)測(cè)試類
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絕對(duì)值計(jì)算
        System.out.println(X.subtract(Y).abs());
    }
}

運(yùn)行結(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));

運(yùn)行結(jié)果:

false
0

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

常用的BigDecimal的定義和用法

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

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

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

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

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

BigDecimal的用法:

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

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

2.BigDecimal常用的加減乘除運(yùn)算

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)精度不一樣的時(shí)候也當(dāng)做不相等,而compareTo方法卻可以忽略精度的不同,只比較數(shù)值是否相同。

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

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

4.在java中判斷一個(gè)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é)

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

相關(guān)文章

最新評(píng)論