java中BigDecimal的常见用法
2019-06-14?11:05:53
一、精度問(wèn)題
二、加減乘除
三、大小比較
四、小數(shù)位數(shù)及四舍五入規(guī)則
五、mysql數(shù)據(jù)庫(kù) 設(shè)計(jì)
?
精度問(wèn)題:
示例1
問(wèn), 結(jié)果是多少? 0.01?
No! 結(jié)果是0.009999999999999998!
為什么會(huì)這樣呢? 因?yàn)閒loat和double都是浮點(diǎn)數(shù), 都有取值范圍, 都有精度范圍. 浮點(diǎn)數(shù)與通常使用的小數(shù)不同, 使用中, 往往難以確定. 常見(jiàn)的問(wèn)題是定義了一個(gè)浮點(diǎn)數(shù), 經(jīng)過(guò)一系列的計(jì)算, 它本來(lái)應(yīng)該等于某個(gè)確定值, 但實(shí)際上并不是!
金額必須是完全精確的計(jì)算, 故不能使用double或者float, 而應(yīng)該采用java.math.BigDecimal.
加減乘除:
兩個(gè)BigDecimal值應(yīng)該怎樣進(jìn)行加減乘除呢? +, -, *, / 這樣寫(xiě)嗎? 不!
加減乘除使用了英文的加減乘除, 即add, substract, multiply和divide
?
大小比較:
兩個(gè)BigDecimal值比較使用compareTo方法, 比較結(jié)果有-1, 0, 1, 分別表示小于, 等于, 大于; 對(duì)于0, 可以使用BigDecimal.ZERO表示!
?
小數(shù)位數(shù)及四舍五入規(guī)則:
在項(xiàng)目中, 涉及到稅費(fèi)的計(jì)算, 計(jì)算的結(jié)果可能是小數(shù)點(diǎn)后面十幾位, 那么怎么進(jìn)行結(jié)算呢? 這就需要四舍五入這種東東了
其中setScale的第一個(gè)參數(shù)是小數(shù)位數(shù), 這個(gè)示例是保留2位小數(shù), 后面是四舍五入規(guī)則.
?
mysql數(shù)據(jù)庫(kù)設(shè)計(jì):
BigDecimal在進(jìn)行入庫(kù)時(shí), 數(shù)據(jù)庫(kù)選擇decimal類(lèi)型, 長(zhǎng)度可以自定義, 如18; 小數(shù)點(diǎn)我們項(xiàng)目中用的是2, 保留2位小數(shù). 此外還要注意的就是默認(rèn)值, 一定寫(xiě)成0.00, 不要用默認(rèn)的NULL, 否則在進(jìn)行加減排序等操作時(shí), 會(huì)帶來(lái)轉(zhuǎn)換的麻煩!
balance decimal(18,2) DEFAULT ‘0.00’ COMMENT ‘賬戶余額’,
---------------------
作者:is_Min
來(lái)源:CSDN
原文:https://blog.csdn.net/qq_34581118/article/details/79799097
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
轉(zhuǎn)載于:https://www.cnblogs.com/wanfeng1937/p/11022363.html
總結(jié)
以上是生活随笔為你收集整理的java中BigDecimal的常见用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Linux下 SpringBoot ja
- 下一篇: TCP/IP illustated: 第