我正在使用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 :(得分:-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();