日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談Java基礎(chǔ)知識(shí)之BigDecimal

瀏覽:41日期:2022-08-12 17:33:27
目錄一、基本使用二、舍入模式三、注意事項(xiàng)四、異常處理 ArithmeticException異常一、基本使用

使用示例:

// 初始化BigDecimal bd1=new BigDecimal('456');BigDecimal bd2=new BigDecimal('123');// 加BigDecimal add=bd1.add(bd2);// 減BigDecimal subtract=bd1.subtract(bd2); // 乘BigDecimal multiply=bd1.multiply(bd2); // 除BigDecimal divide=bd1.divide(bd2); // 指數(shù)運(yùn)算, 2 is exponentBigDecimal powerValue=bd2.pow(2); // 四舍五入multiply.setScale(1, RoundingMode.HALF_EVEN);二、舍入模式

枚舉類 java.math.RoundingMode 定義了8種數(shù)據(jù)的舍入模式,在 BigDecimal 中,可以用 BigDecimal.setScale(int newScale, RoundingMode roundingMode) 來(lái)設(shè)置數(shù)據(jù)的精度和舍入模式。

ROUND_UP:向遠(yuǎn)離零的方向舍入。 若舍入位為非零,則對(duì)舍入部分的前一位數(shù)字加1;若舍入位為零,則直接舍棄。即為向外取整模式。 ROUND_DOWN:向接近零的方向舍入。 不論舍入位是否為零,都直接舍棄。即為向內(nèi)取整模式。 ROUND_CEILING:向正無(wú)窮大的方向舍入。 若 BigDecimal 為正,則舍入行為與 ROUND_UP 相同;若為負(fù),則舍入行為與 ROUND_DOWN 相同。即為向上取整模式。 ROUND_FLOOR:向負(fù)無(wú)窮大的方向舍入。 若 BigDecimal 為正,則舍入行為與 ROUND_DOWN 相同;若為負(fù),則舍入行為與 ROUND_UP 相同。即為向下取整模式。 ROUND_HALF_UP:向“最接近的”整數(shù)舍入。 若舍入位大于等于5,則對(duì)舍入部分的前一位數(shù)字加1;若舍入位小于5,則直接舍棄。即為四舍五入模式。 ROUND_HALF_DOWN:向“最接近的”整數(shù)舍入。 若舍入位大于5,則對(duì)舍入部分的前一位數(shù)字加1;若舍入位小于等于5,則直接舍棄。即為五舍六入模式。 ROUND_HALF_EVEN:向“最接近的”整數(shù)舍入。 若(舍入位大于5)或者(舍入位等于5且前一位為奇數(shù)),則對(duì)舍入部分的前一位數(shù)字加1; 若(舍入位小于5)或者(舍入位等于5且前一位為偶數(shù)),則直接舍棄。即為銀行家舍入模式。 ROUND_UNNECESSARY 斷言請(qǐng)求的操作具有精確的結(jié)果,因此不需要舍入。 如果對(duì)獲得精確結(jié)果的操作指定此舍入模式,則拋出ArithmeticException。

淺談Java基礎(chǔ)知識(shí)之BigDecimal

三、注意事項(xiàng)

1.大量的數(shù)學(xué)計(jì)算時(shí),使用 基本數(shù)據(jù)類型 而不是BigInteger 和 BigDecimal 。

原因:由于是不可變(immutable)的,在進(jìn)行每一步運(yùn)算時(shí),都會(huì)產(chǎn)生一個(gè)新的對(duì)象,引起開銷。建議:應(yīng)盡量用 long , float , double 等基本類型做科學(xué)計(jì)算或者工程計(jì)算。設(shè)計(jì)的目的是用來(lái)精確地表示大整數(shù)和小數(shù),例如進(jìn)行金額等比較敏感的數(shù)據(jù)運(yùn)算。

2.構(gòu)造 BigDecimal 時(shí),使用 String 而不是 double 。

原因:有些數(shù)字用 double 根本無(wú)法精確表示,傳給 BigDecimal 構(gòu)造方法時(shí)就已經(jīng)不精確了。例如:new BigDecimal(0.1)得到的值是0.1000000000000000055511151231257827021181583404541015625。建議:使用 new BigDecimal(“0.1”) 得到的值是 0.1。BigDecimal 有4個(gè)構(gòu)造方法,其中的兩個(gè)用 BigInteger 構(gòu)造,一個(gè)用 double 構(gòu)造,一個(gè)用 String 構(gòu)造。

3.比較兩個(gè) BigDecimal 值時(shí),使用 compareTo() 而不是 equals()。

原因: equals() 方法認(rèn)為 0.1 和 0.1 是相等的,返回true;認(rèn)為 0.10 和 0.1 是不等的,返回false。compareTo() 方法則認(rèn)為 0.1 與 0.1 相等,0.10 與 0.1 也相等。

4.另外還有一些情形,任意精度的小數(shù)運(yùn)算仍不能表示精確結(jié)果。例如,1 除以 9 會(huì)產(chǎn)生無(wú)限循環(huán)的小數(shù) .111111…。出于這個(gè)原因,在進(jìn)行除法運(yùn)算時(shí),BigDecimal可以讓您顯式地控制舍入。

四、異常處理 ArithmeticException異常

在使用BigDecimal數(shù)據(jù)類型進(jìn)行計(jì)算時(shí),會(huì)有三種情況拋出 ArithmeticException,分別是:

1.當(dāng)除數(shù)為 0 時(shí),這種情況比較常見,所以我們?cè)谶M(jìn)行除法運(yùn)算之前先判斷下除數(shù)是否為 0;

2.如果運(yùn)算的結(jié)果是無(wú)線循環(huán)的小數(shù),并且在除的時(shí)候沒有對(duì)結(jié)果設(shè)置精確的位數(shù);BigDecimal divide 方法結(jié)果為無(wú)限小數(shù)問題 10/3=3.3333333333333333…

public static void main(String[] args) {BigDecimal a = new BigDecimal('10');BigDecimal o = new BigDecimal('3');System.out.print(a.divide(o,2, BigDecimal.ROUND_DOWN).doubleValue());}

Note:不設(shè)置精度范圍會(huì)出現(xiàn)異常

3.當(dāng)我們?cè)O(shè)置了結(jié)果的舍入模式是 ROUND_UNNECESSARY 模式時(shí):如果確保了計(jì)算的結(jié)果是精確的,則不會(huì)拋出異常;否則,就會(huì)拋出ArithmeticException 異常。

4.只設(shè)置精度(小數(shù)點(diǎn)后面的位數(shù),scale),但沒有設(shè)置舍入模式(roundingModel)時(shí),會(huì)不知道如何對(duì)小數(shù)舍入而報(bào)錯(cuò)。所以在設(shè)置精度時(shí)要連舍入模式一起設(shè)置。

// wrong code bd = new BigDecimal(1.5); // is actually 1.4999.... bd.setScale(1); // throws ArithmeticException // wright code a = new BigDecimal('2.5'); // digit left of 5 is even, so round down b = new BigDecimal('1.5'); // digit left of 5 is odd, so round up a.setScale(0, BigDecimal.ROUND_HALF_EVEN).toString() // => 2 b.setScale(0, BigDecimal.ROUND_HALF_EVEN).toString() // => 2

5.指數(shù)運(yùn)算,指數(shù) exponent 為負(fù)數(shù)時(shí)If you are raising things to negative exponents, you must specify a MathContext in BigDecimal.pow(int, MathContext) so it knows how much precision to use ? otherwise, BigDecimal will try to compute it to infinite precision, which is not possible for some values.

//wrong codeBigDecimal powerValue=bd2.pow(-27);// -27 is exponent

到此這篇關(guān)于淺談Java基礎(chǔ)知識(shí)之BigDecimal的文章就介紹到這了,更多相關(guān)Java BigDecimal內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美一区二区三区免费看| 首页国产欧美日韩丝袜| 国产亚洲精品v| 国产成人精品福利| 久久av日韩| 免费视频一区二区三区在线观看| 日韩国产一二三区| 91成人在线网站| 黑丝一区二区三区| 午夜精品免费| 日韩国产一区二区三区| 在线手机中文字幕| 久久久久网站| 蜜臀国产一区二区三区在线播放 | 久久夜夜操妹子| 视频一区中文字幕| 成人亚洲精品| 日韩亚洲精品在线观看| 亚洲va中文在线播放免费| 首页欧美精品中文字幕| 99精品国产一区二区三区| 日本aⅴ免费视频一区二区三区| 神马午夜久久| 综合欧美亚洲| 国产福利资源一区| 久久精品一区二区不卡| 亚洲精品成人| 亚州av日韩av| 国产精品麻豆久久| 婷婷综合在线| 中文在线资源| 青青青免费在线视频| 欧美激情麻豆| 国产伦精品一区二区三区在线播放| 欧美va亚洲va日韩∨a综合色| 免费一级欧美在线观看视频 | 欧美国产另类| 精品国产欧美日韩一区二区三区| 日本v片在线高清不卡在线观看| 亚洲尤物在线| 久久久亚洲一区| 日韩欧美视频专区| а√天堂8资源在线| 美女视频免费精品| 国产精品视频一区二区三区综合| 综合激情五月婷婷| 亚洲精品乱码| 国产日产高清欧美一区二区三区 | 精品99在线| 久久伊人亚洲| 精品国产91| 在线日韩视频| 亚洲欧美日韩精品一区二区| 最新国产精品视频| 国产一区丝袜| 一区久久精品| 91麻豆精品| 精品网站999| 久久视频精品| 蜜臀av一区二区在线免费观看| 蜜桃免费网站一区二区三区| 中文在线日韩| 国产日韩欧美一区二区三区| 国产成人黄色| 999国产精品视频| 一区二区三区国产在线| 国产欧美日韩一级| 999精品在线| 日韩欧美中文在线观看| 精品免费在线| 免费观看久久久4p| 欧美激情视频一区二区三区免费 | 国产成人77亚洲精品www| 99久久婷婷这里只有精品| 日本伊人午夜精品| 国产传媒在线观看| 夜夜嗨一区二区| 精品久久福利| 亚洲自拍另类| 成人精品国产亚洲| 免费不卡在线视频| 国产在线观看www| 综合欧美精品| 国产精品97| 久久久久亚洲精品中文字幕| 亚洲精品一区二区妖精| 久久亚洲黄色| 蜜臀av性久久久久蜜臀aⅴ流畅| 美女久久久久久| 久久亚洲二区| 女主播福利一区| 视频二区不卡| 国产a亚洲精品| 欧美亚洲免费| 日韩区一区二| 综合激情网...| 亚洲激情另类| 欧美精品自拍| 日韩在线高清| 精品中文在线| 欧美专区一区| 免费在线成人网| 免费成人性网站| 亚洲欧美日本国产专区一区| 电影亚洲精品噜噜在线观看| 久久久免费人体| 国产精品亚洲二区| 国产日韩欧美一区二区三区在线观看| 久久午夜精品| 中文字幕一区二区精品区| 99riav1国产精品视频| 狠狠爱成人网| 免费欧美日韩| 青青国产精品| 久久精品凹凸全集| 国内精品麻豆美女在线播放视频| 福利一区在线| 欧美亚洲在线日韩| 国产精品日本| 91av一区| 国产精品免费不| 午夜av不卡| 日韩精品一二三区| 欧美国产三级| 日产精品一区二区| 视频小说一区二区| 一区二区国产精品| 国产精品美女在线观看直播| 鲁鲁在线中文| 亚洲成人三区| 久久激情五月激情| 九九精品调教| 日韩中出av| jizzjizz中国精品麻豆| 午夜亚洲精品| 国产精品久久久久久久久妇女| 免费欧美一区| 国产精品99久久免费观看| 99精品美女| 国产精品magnet| 国产午夜精品一区二区三区欧美| 国产精品久久久久久av公交车| 九九精品调教| 九九九精品视频| 蜜桃伊人久久| 国产成人精品一区二区免费看京 | 国产精品久久久久久久久久10秀 | 日韩中文在线电影| 亚洲精选成人| 成人在线网站| 国产精品久久久免费| 妖精视频成人观看www| 国产激情欧美| 日韩精品三区四区| 米奇777超碰欧美日韩亚洲| 国产精品一级| 日韩黄色av| 蜜臀av国产精品久久久久| 韩国精品主播一区二区在线观看 | 亚洲精品日本| av一区二区高清| 精品中国亚洲| 日韩va亚洲va欧美va久久| 丝袜美腿成人在线| 亚洲一区二区三区四区五区午夜 | 亚洲精品一区三区三区在线观看| 国产欧美一区二区色老头| 欧美一区=区| 亚洲欧美日韩一区在线观看| 精品捆绑调教一区二区三区| 久久精品国产999大香线蕉 | 国产一区国产二区国产三区| 亚洲日韩中文字幕一区| 蜜桃成人av| 欧美精品一线| 在线精品观看| 婷婷综合国产| 日韩av一二三| 国产精品久久久久毛片大屁完整版| 午夜久久av| 热久久久久久| 欧美国产精品| 国产精品网在线观看| 国产精品115| 老司机精品视频网| 老司机免费视频一区二区三区| 精品久久亚洲| 国内亚洲精品| 亚洲综合激情在线| 国产精品传媒麻豆hd| 久久影院午夜精品| 欧美日韩精品免费观看视频完整| 99热精品在线观看| 日产欧产美韩系列久久99| 国产另类在线| av免费不卡国产观看| 久久要要av| 一区二区三区国产盗摄| 国产精品欧美在线观看| 91嫩草亚洲精品|