商業(yè)計算--BigDecimal

float和double類型主要是為了科學(xué)計算而設(shè)計的,它們并沒有提供完全精確的結(jié)果,所以不應(yīng)該被用于需要精確結(jié)果的場合。
對于此,在大多數(shù)的商業(yè)計算中,一般采用BigDecimal來進(jìn)行精確計算。
BigDecimal的使用步驟如下:
1.初始化一個BigDecimal對象,兩種方法都可行

BigDecimal bd1 = new BigDecimal(Double.toString(0.123));
BigDecimal bd2 = BigDecimal.valueOf(0.123);

2.具體運(yùn)算方法如下:

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

對于除法,要考慮除不盡的情況,因此需要指定保留小數(shù)位和取值策略的問題。
計算結(jié)束后,如果我們需要將BigDecimal對象轉(zhuǎn)換成相應(yīng)的基本數(shù)據(jù)類型的變量,可以使用floatValue(),doubleValue()等方法。
現(xiàn)在我們就來封裝一個BigDecimal運(yùn)算工具類,下次直接調(diào)用即可

public class BigDecimalUtil {

    private BigDecimalUtil(){

    }


    public static BigDecimal add(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2);
    }

    public static BigDecimal sub(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.subtract(b2);
    }


    public static BigDecimal mul(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.multiply(b2);
    }

    public static BigDecimal div(double v1,double v2){
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.divide(b2,2,BigDecimal.ROUND_HALF_UP);//四舍五入,保留2位小數(shù)

        //除不盡的情況
    }





}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容