如何获得正确的非舍入结果,就像我在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
答案 0 :(得分:1)
@Lino在评论中指出8789700/3200 = 2746.78125
。你从excel得到的结果有浮点舍入错误,java是正确的。