本文介紹了Java雙對(duì)象存儲(chǔ)到小數(shù)點(diǎn)后兩位的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
能否將java.lang.Double存儲(chǔ)到小數(shù)點(diǎn)后兩位
例如:0.2
變?yōu)?code>0.20
我將代碼修改為以下代碼
Double correlation = getSomeDoubleValue(label, key, date);
DecimalFormat df = new DecimalFormat("0.00");
correlation = Double.valueOf(df.format(correlation));
但當(dāng)函數(shù)getSomeDoubleValue()
返回0.2
時(shí),df.format(correlation)
使其0.20
,但當(dāng)我需要java.lang.Double
時(shí),Double.valueOf("0.20")
返回0.2
。
我不確定如何實(shí)現(xiàn)這一點(diǎn),或者它是否完全可以實(shí)現(xiàn)。
推薦答案
浮點(diǎn)數(shù),如double
和float
實(shí)際上是數(shù)學(xué)表達(dá)式,因此不準(zhǔn)確。
如果您想要更精確的數(shù)字,應(yīng)使用BigDecimal
類,它是一個(gè)任意精度的十進(jìn)制數(shù)。
您可以使用setScale
的一個(gè)setScale
函數(shù)設(shè)置BigDecimal
存儲(chǔ)的位數(shù),該函數(shù)還可以用于設(shè)置在對(duì)BigDecimal
進(jìn)行數(shù)學(xué)運(yùn)算時(shí)使用的舍入模式。
請(qǐng)注意,BigDecimal
是一個(gè)對(duì)象類型,因此您需要使用其方法對(duì)其進(jìn)行數(shù)學(xué)運(yùn)算(.add
,.subtract
,.multiply
,.divide
)。
BigDecimal
具有用于從double
、long
或int
創(chuàng)建BigDecimal
的構(gòu)造函數(shù)。
這篇關(guān)于Java雙對(duì)象存儲(chǔ)到小數(shù)點(diǎn)后兩位的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,