2013-03-06 67 views
0

我正在用Java計算器。這一切都工作,我現在試圖實現小數。我正在使用雙打來存儲數字。我有一個解決方案,下面的解決方案:Java - 帶小數點的計算器

decPoints++; //decPoints holds the current number of numbers after the decimal point 
currentVal = currentVal + (n/Math.pow(10, decPoints)); //n is the number that is to be added on 

這樣的工作,但它會導致舍入錯誤,例如, 3.369會變成3.689999 ..

是否有一個簡單的解決方案來解決這個問題或其他方式來實現小數?

在此先感謝!

+0

你的意思是3.369作爲3.368999999出現......? – 2013-03-06 15:55:39

+0

對不起,那裏的措辭不好。 – DJDMorrison 2013-03-06 15:56:41

回答

-1

沒關係,我自己使用BigDecimals找到了一個解決方案。

decPoints++; 
currentVal = currentVal + (n/Math.pow(10, decPoints)); 

BigDecimal bd = new BigDecimal(currentVal); 
bd = bd.setScale(decPoints, BigDecimal.ROUND_HALF_UP); 
currentVal = bd.doubleValue(); 
+0

這隻適用於一些精心挑選的值。你應該始終在'BigDecimals'中工作。 – EJP 2013-03-06 21:58:06