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