日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
用BigDecimal計(jì)算金額就高枕無憂了?帶你了解BigDecimal這五個(gè)坑

BigDecimal是java.math包中提供的API類,專門用于對(duì)超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算。一般情況下,對(duì)于不需要準(zhǔn)確精度的計(jì)算,我們可以通過float或者double進(jìn)行計(jì)算,但是如果需要精確計(jì)算的結(jié)果,就必須使用BigDecimal類來操作。

創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)上林,10年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

而BigDecamal本質(zhì)上是一個(gè)對(duì)象,所以傳統(tǒng)的+、-、*、/等算術(shù)運(yùn)算符就不能直接使用了。

今天我們來了解一下,使用BigDecimal時(shí)容易踩的五個(gè)坑。

1、錯(cuò)誤的初始化

BigDecimal提供了很多初始化方法,但是需要注意的是,當(dāng)我們使用double這種浮點(diǎn)型初始化,可能得到預(yù)期外的結(jié)果。

當(dāng)我們使用浮點(diǎn)型進(jìn)行初始化時(shí),由于其本身就是一個(gè)不確定的值,傳給BigDecimal初始化時(shí)已經(jīng)丟失了精度,所以看起來就像一個(gè)bug。

一般來說,建議大家初始化時(shí)將其轉(zhuǎn)為String或者使用BigDecimal.valueOf方法。

2、錯(cuò)誤的等值比較方法

equal方法會(huì)比較兩個(gè)BigDecimal對(duì)象的精度,如果精度不同,則認(rèn)為是兩個(gè)不同的對(duì)象。

如果要比較兩個(gè)對(duì)象的大小,建議使用compareTo方法。

3、未指定精度可能會(huì)導(dǎo)致異常

如果除法的商是一個(gè)無限小數(shù),而我們又沒有指定精度大小,程序?qū)伋鲆粋€(gè)異常。當(dāng)我們使用BigDecimal時(shí),應(yīng)該時(shí)刻記得指定精度,避免因?yàn)榫葐栴}帶來的損失。

4、toString方法的格式問題

當(dāng)我們想把一個(gè)BigDecimal.valueOf構(gòu)造的BigDecimal轉(zhuǎn)為String時(shí),應(yīng)該了解到toString方法和toPlainString方法的區(qū)別。

toString:必要時(shí)會(huì)使用科學(xué)計(jì)數(shù)法。

toPlainString:不使用科學(xué)計(jì)數(shù)法。

toEngineeringString:工程計(jì)算中經(jīng)常使用的記錄數(shù)字的方法,與科學(xué)計(jì)數(shù)法類似,但要求10的冪必須是3的倍數(shù)。

5、執(zhí)行順序不同導(dǎo)致的結(jié)果差異

當(dāng)執(zhí)行算術(shù)運(yùn)算時(shí),會(huì)滿足乘法交換律,但是對(duì)于BigDecimal來說,是不適用的。

不同的執(zhí)行順序會(huì)得到不同的結(jié)果,對(duì)于金融類的需求,這0.1的差額,足夠你排除bug到半夜了。

總結(jié)

1、BigDecimal雖然計(jì)算精度準(zhǔn)確,但是其性能相對(duì)double,float是較差的。如果沒有高精度計(jì)算的要求,那也不必強(qiáng)行使用BigDecimal。

2、初始BigDecimal時(shí),建議強(qiáng)制使用字符串的構(gòu)造參數(shù)。

3、BigDecimal對(duì)象是不可變的,每次計(jì)算都會(huì)產(chǎn)生一個(gè)新對(duì)象,所以記得保存做完計(jì)算以后的值。


網(wǎng)站欄目:用BigDecimal計(jì)算金額就高枕無憂了?帶你了解BigDecimal這五個(gè)坑
URL標(biāo)題:http://www.dlmjj.cn/article/ccsccdp.html