java中BigDecimal的學習

來源:互聯網
上載者:User

標籤:4.0   tip   1.0   地方   一個   無限迴圈   ges   src   sys   

乾著java的活,但是看的都是一些偏底層的東西(或者我根本就沒有看),有點荒廢了java的學習。

最近一直在用到一個類是BigDecimal,但都是模稜兩可地在那兒用,並沒有深入研究這個類的細節,感覺不能再拖了。

BigDecimal,從名字來看就是進行大數運算的,不光這樣,還廣泛用於小數的精確運算。

當你接觸到和錢有關的計算的時候,這個類還是很有用滴。

先來看一個例子

 1 package com.tuhooo.bigdecimal; 2  3 /** 4  * Created by tuhooo on 2017/8/21. 5  */ 6 public class Demo1 { 7     public static void main(String[] args) { 8         System.out.println(0.06 + 0.01); 9         System.out.println(1.002 - 0.4);10         System.out.println(4.015 * 100);11         System.out.println(333.1 / 500);12     }13 }

講道理,上面的運算都還沒有涉及到無限迴圈小數呢,但是電腦給出的計算結果卻是這樣滴:

其實原因很簡單,電腦的表示數的精度是有限滴,電腦底層用二進位來表示資料的時候,尤其是小數的時候精度更不好。

think about that,尼瑪,這種運算要是出現在和錢有關的地方,說高達上點就是金融有關的話,是不能接受的。

java中提供了一個很好的類——BigDecimal來解決這個問題。

 1 package com.tuhooo.bigdecimal; 2  3 import java.math.BigDecimal; 4  5 /** 6  * Created by tuhooo on 2017/8/21. 7  */ 8 public class Demo2 { 9     public static void main(String[] args) {10         System.out.println(new BigDecimal("0.06").add(new BigDecimal("0.01")));11         System.out.println(new BigDecimal("1.002").subtract(new BigDecimal("0.4")));12         System.out.println(new BigDecimal("4.015").multiply(new BigDecimal("100")));13         System.out.println(new BigDecimal("333.1").divide(new BigDecimal("500")));14     }15 }

看接下來的效果:

再來看一個例子:

 1 package com.tuhooo.bigdecimal; 2  3 import java.math.BigDecimal; 4  5 /** 6  * Created by tuhooo on 2017/8/21. 7  */ 8 public class Demo3 { 9     public static void main(String[] args) {10         System.out.println(new BigDecimal(0.06).add(new BigDecimal(0.01)));11         System.out.println(new BigDecimal(1.002).subtract(new BigDecimal(0.4)));12         System.out.println(new BigDecimal(4.015).multiply(new BigDecimal(100)));13         System.out.println(new BigDecimal(333.1).divide(new BigDecimal(500)));14     }15 }

這裡可以發現,並不是用了BigDecimal就會有效果的,和BigDecimal的構造方式也有關係

to be continued......

 

java中BigDecimal的學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.