BigDecimal類的簡單用法
文章出處:http://hlpi.cn 作者:興邦開發(fā)部
本文實例講述了Java中BigDecimal類的簡單用法,,是Java程序設計中非常實用的技巧,,分享給大家供大家參考。具體用法分析如下:
一般來說,一提到Java里面的商業(yè)計算,,我們都知道不能用float和double,,因為他們無法進行精確計算。但是Java的設計者給編程人員提供了一個很有用的類BigDecimal,,他可以完善float和double類無法進行精確計算的缺憾,。BigDecimal類位于java.maths類包下。首先我們來看下如何構造一個BigDecimal對象,。它的構造函數(shù)很多,,這里挑選最常用的兩個來演示一下:一個就是BigDecimal(double val),另一個就是BigDecimal(String str),。這兩個看上去沒什么太大區(qū)別,,但是正像API描述中說的那樣:
也就是說利用double作為參數(shù)的構造函數(shù),無法精確構造一個BigDecimal對象,,需要自己指定一個上下文的環(huán)境,,也就是指定精確位。而利用String對象作為參數(shù)傳入的構造函數(shù)能精確的構造出一個BigDecimal對象,。請看下面的代碼:
運行后輸出:
10.123
10.1229999999999993320898283855058252811431884765625
所以我們在選擇構造函數(shù)時,,要看具體需求而定。
另外,,很多人會問到怎么將基本類型,,如int,float,,double,,long,和BigDecimal對象相互轉換,。很簡單:
基本類型通過構造函數(shù)轉換成對應的BigDecimal對象,,而BigDecimal類提供了諸如intValue(), floatValue(), doubleValue(), longValue()方法來將BigDecimal對象轉換成對應的值。
關于BigDecimal是如何計算的,,我以論壇中一個人的提問帖子為例,,來簡單的寫出BigDecimal的運算方法。題目是:李白無事街上走,,提壺去買酒,。遇店加一倍,見花喝一斗,,五遇花和店,,喝光壺中酒,試問李白壺中原有多少斗酒,?
這道題應該是從后往前推,,并且要逆運算,最后得出原有酒的體積。
運行結果:
0.96875
希望本文所述對大家Java程序設計的學習有所幫助,。