成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Double精度丟失解決方案《淺談BigDecimal》

icattlecoder / 2294人閱讀

摘要:錯誤將導(dǎo)致不能漲薪。如果未指定舍入模式,并且無法表示準(zhǔn)確結(jié)果,則拋出一個異常否則,通過向該操作提供適當(dāng)?shù)膶ο?,可以對已選擇的精度和舍入模式執(zhí)行計算。使用此類例如,中的整數(shù)字段來表示舍入模式已過時應(yīng)改為使用例如,的枚舉值。

為什么金額要使用BigDecimal而不使用Double?

在電商或者金融行業(yè),看似很小的誤差但是通過一番計算后會導(dǎo)致很大的誤差,誤差將演變?yōu)殄e誤。錯誤將導(dǎo)致不能漲薪。
BigDecimal 類提供以下操作:算術(shù)、標(biāo)度操作、舍入、比較、哈希算法和格式轉(zhuǎn)換

1. double精度丟失示例
例1:
 Double d1 = 1.0000001;
 Double d2 = 0.000002;
 //理想輸出1.0000021,實際輸出1.0000021000000001
 System.out.println(d1+d2);
 //實際輸出1.0000021  理想輸出1.0000021
 System.out.println(new BigDecimal(d1.toString()).add(new     BigDecimal(d2.toString())));
 例2:
 Double d3 = 11540d;
 Double d4 = 0.35;
 //實際輸出4038.9999999999995 理想輸出4039
 System.out.println(d3*d4);
 //實際輸出4039.000 理想輸出4039
 System.out.println(new BigDecimal(d3.toString()).multiply(new BigDecimal(d4.toString())));
2. BigDecimal的基本使用
BigDecimal decimal =  new BigDecimal("1.3");
BigDecimal decimal1 =  new BigDecimal("3.32");
//加
System.out.println(decimal.add(decimal1));
//減
System.out.println(decimal1.subtract(decimal));
//乘
System.out.println(decimal1.multiply(decimal));
//除
System.out.println(decimal1.divide(decimal,2,BigDecimal.ROUND_CEILING ));
3. BigDecimal精度處理類型

BigDecimal 類使用戶能完全控制舍入行為。如果未指定舍入模式,并且無法表示準(zhǔn)確結(jié)果,則拋出一個異常;否則,通過向該操作提供適當(dāng)?shù)?MathContext 對象,可以對已選擇的精度和舍入模式執(zhí)行計算。在任何情況下,可以為舍入控制提供八種舍入模式。使用此類(例如,ROUND_HALF_UP)中的整數(shù)字段來表示舍入模式已過時;應(yīng)改為使用 RoundingMode enum(例如,RoundingMode.HALF_UP)的枚舉值。
八種舍入模式:

  CEILING 向正無限大方向舍入的舍入模式。 
  DOWN 向零方向舍入的舍入模式。 
  FLOOR 向負(fù)無限大方向舍入的舍入模式。 
  HALF_DOWN  向最接近數(shù)字方向舍入的舍入模式,如果與兩個相鄰數(shù)字的距離相等,則向下舍入。 
  HALF_EVEN 向最接近數(shù)字方向舍入的舍入模式,如果與兩個相鄰數(shù)字的距離相等,則向相鄰的偶數(shù)舍入。 
  HALF_UP  向最接近數(shù)字方向舍入的舍入模式,如果與兩個相鄰數(shù)字的距離相等,則向上舍入 
  UNNECESSARY 用于斷言請求的操作具有精確結(jié)果的舍入模式,因此不需要舍入。 
  UP 遠(yuǎn)離零方向舍入的舍入模式。 

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75906.html

相關(guān)文章

  • 拯救你丟失精度——BigInteger和BigDecimal類(入門)

    摘要:返回的是是一個整數(shù)的最小值。筆記這個構(gòu)造函數(shù)的結(jié)果可能有些不可預(yù)測。這是因為不能像或者作為任何有限長度的二進(jìn)制分?jǐn)?shù)精確地表示。當(dāng)必須用作源為,注意,此構(gòu)造提供了一個精確的轉(zhuǎn)換它不會將轉(zhuǎn)換為使用方法,然后使用構(gòu)造函數(shù)相同的結(jié)果。 第三階段 JAVA常見對象的學(xué)習(xí) BigInteger和BigDecimal類 BigInteger類 (一) 構(gòu)造方法: //針對超過整數(shù)范圍的運算(整數(shù)最大...

    TerryCai 評論0 收藏0
  • 第一個java后端項目總結(jié)

    摘要:項目環(huán)境用于發(fā)送請求測試項目介紹這是一個商城項目,本來想起名叫項目,發(fā)現(xiàn)自己并沒有用。也是自己第一篇博客,記錄一下自己的學(xué)習(xí)過程,希望一方面能多做寫項目鍛煉能力,另一方面也讓自己在做完之后寫寫博客自己總結(jié)反思。 1.項目環(huán)境 IDEA15 spring4 mybatis3.4 mysql RestLet Client用于發(fā)送請求測試 2.項目介紹 這是一個商城項目,本來想起名叫SSM項...

    Hwg 評論0 收藏0
  • BigDecimal遇到的問題,大伙也說說

    摘要:舍入方式需要弄明白自己的業(yè)務(wù)才用,別為了用而隨便選一個用四舍五入模式從零四舍五入。原值結(jié)論都是向前進(jìn)一位四舍五入到正無窮。 一:相除精度丟失的問題  BigDecimal的api除法相對加減乘要實現(xiàn)的復(fù)雜多了,只介紹常用的我遇到的問題:   問題:兩數(shù)相除,如果9/3=3整除沒問題,但是10/3=0.33333333......除不盡,這里不能讓電腦一直除不盡,所以BigDecimal...

    harriszh 評論0 收藏0
  • java學(xué)習(xí)(五) —— 常用API類概述

    摘要:成員方法類概述用于產(chǎn)生隨機(jī)數(shù)成員方法正則表達(dá)式相關(guān)方法判斷功能分割功能替換功能獲取功能和類的使用類概述包含一些有用的類字段和方法。注意它不能被實例化,因為此類構(gòu)造器是私有的成員方法類類概述表示特定的瞬間,精確到毫秒。 前言 我們都知道,JDK包含了JRE,而JRE中也提供了各種功能的java類,現(xiàn)在我們就對這些類有個簡單了解,然后靈活運用。 常用類:Object類/Scanner類,...

    Tecode 評論0 收藏0
  • BigDecimal 學(xué)習(xí)

    摘要:然而表示這個是的鍋,我不背。的表示一共的數(shù)字位能存儲個,表示存儲兩位小數(shù)。因為默認(rèn)是保留兩位小數(shù),超過了精度,所以保存近似值。大范圍低精度存儲。很準(zhǔn)確,采用科學(xué)計數(shù)法,損失精度,但能存儲更大范圍的數(shù)據(jù),但是精度有損失。 BigDecimal 為什么要使用這個呢?簡單點說就是商業(yè)要求精度計算,而double計算出來的結(jié)果,往往出人意料。 例子 Double運算 showImg(https...

    linkFly 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<