Java中的计算问题

我在Java中执行计算时遇到了一些困难。 这是我想要做的 –

((0.053800 * (500000/1000)) + 4) * 0.85

在我的java应用程序中,它返回26.264999999999997,如果你向上舍入到2位小数,则变为26.26。

但在MS Excel中,相同的公式返回26.265000 ..因此舍入结果为26.27。

如果我的Java应用程序返回的值不正确,我该怎么做才能纠正它?

以下是一个更好的近似值,在这种情况下得到相同的值:

 import java.math.BigDecimal; import java.math.MathContext; public class Test { public static void main(String[] args) { //double d = ((0.053800 * (500000/1000)) + 4) * 0.85; BigDecimal d = ((new BigDecimal(0.053800).multiply(new BigDecimal(500000).divide(new BigDecimal(1000)))).add(new BigDecimal(4))).multiply(new BigDecimal(0.85)); System.out.println(d.round(MathContext.DECIMAL32)); } } 

请参阅我的答案 ,了解正在发生的事情。