成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用BigDecimal計算金額就高枕無憂了?帶你了解BigDecimal這五個坑

開發(fā) 前端
一般情況下,對于不需要準(zhǔn)確精度的計算,我們可以通過float或者double進(jìn)行計算,但是如果需要精確計算的結(jié)果,就必須使用BigDecimal類來操作。

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

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

今天我們來了解一下,使用BigDecimal時容易踩的五個坑。

1、錯誤的初始化

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

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

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

2、錯誤的等值比較方法

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

如果要比較兩個對象的大小,建議使用compareTo方法。

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

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

4、toString方法的格式問題

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

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

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

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

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

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

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

總結(jié)

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

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

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

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2024-04-10 08:39:56

BigDecimal浮點(diǎn)數(shù)二進(jìn)制

2010-03-17 14:38:02

2013-07-18 15:57:42

2010-09-02 17:22:34

DHCP服務(wù)器

2017-05-03 17:49:33

CIO云計算異構(gòu)

2010-01-27 16:17:57

2023-06-30 08:10:14

JavaBigDecimal

2009-07-09 15:43:26

2025-02-07 08:14:15

Java容器應(yīng)用

2017-05-15 08:43:34

半月刊

2022-02-17 16:34:33

戴爾

2021-02-02 11:13:41

BigDecimal支付電商

2011-05-06 10:44:10

惠普激光打印機(jī)

2018-01-07 01:32:31

2024-04-15 00:00:00

LongBigDecimal運(yùn)算

2022-07-19 07:30:06

BigDecimal運(yùn)算float

2023-04-07 17:19:04

2009-10-23 14:46:43

2020-03-02 14:55:02

JavaBigDecimalAPI

2022-12-08 09:34:26

開發(fā)操作
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 日本一区二区三区四区 | 国产精品久久久久久久久久免费 | 精品亚洲一区二区 | 欧美激情欧美激情在线五月 | 久久午夜国产精品www忘忧草 | 日韩精品免费一区二区在线观看 | 久久国产精品72免费观看 | 亚洲午夜av | 一区二区三区四区在线视频 | 成人精品一区二区三区中文字幕 | 久久综合久久久 | 国产真实乱对白精彩久久小说 | 国产一级精品毛片 | 精品欧美乱码久久久久久1区2区 | 成人免费在线 | 国产精品日韩高清伦字幕搜索 | 欧美精品一区二区三区在线播放 | av中文字幕在线观看 | 日本特黄a级高清免费大片 成年人黄色小视频 | 国产成人99久久亚洲综合精品 | 亚洲精品中文字幕在线观看 | 三级高清| 国产精品夜夜春夜夜爽久久电影 | 中文字幕亚洲国产 | 国产日韩欧美一区二区在线播放 | 日韩欧美亚洲 | 久草网站 | 国产精品久久久久久久久久久新郎 | 中文字幕 欧美 日韩 | 青青草综合 | 国产黄色一级电影 | 国产一区二区三区免费视频 | 中文字幕伊人 | 国产美女视频黄a视频免费 国产精品福利视频 | 国产高清性xxxxxxxx | 亚洲精品欧洲 | 亚洲精品一区中文字幕乱码 | 免费精品久久久久久中文字幕 | 一区二区免费高清视频 | 天天操天天插天天干 | 成年视频在线观看 |