Удалить ненужные округления - PullRequest
0 голосов
/ 18 мая 2018

Как получить правильный не округленный результат, как и в 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 голосов
/ 18 мая 2018

Как отметил @Lino в своем комментарии, 8789700/3200 = 2746.78125.В результате, который вы получили от Excel, есть ошибки округления с плавающей запятой, Java является правильным.

...