删除不必要的舍入

时间:2018-05-18 10:28:33

标签: java decimal rounding

如何获得正确的非舍入结果,就像我在Excel中获得的结果一样?

public void testdivide_largenumber() {
    double result;
    double number = 8789700;
    double divisor = 3200;
    BigDecimal number_BD = new BigDecimal(number, MathContext.DECIMAL64);
    BigDecimal divisor_BD = new BigDecimal(divisor, MathContext.DECIMAL64);

    BigDecimal result_BD;

    result = (double) (number / divisor);
    result_BD = number_BD.divide(divisor_BD);

    System.out.println("double result should be 2746.78124999656="+ result );
    System.out.println("BigDecimal result should be 2746.78124999656="+ result_BD );
}

结果:

double结果应为2746.78124999656=2746.78125

BigDecimal结果应为2746.78124999656=2746.78125

1 个答案:

答案 0 :(得分:1)

@Lino在评论中指出8789700/3200 = 2746.78125。你从excel得到的结果有浮点舍入错误,java是正确的。

相关问题