Возвращая ZERO с определенной точностью, используя BigDecimal - PullRequest
0 голосов
/ 17 декабря 2011

Я использую следующий код:

//...
else if(number.equals(ZERO))
    return BigDecimal.ZERO.setScale(precision);

Функция вызывается через

BigDecimal num = new BigDecimal(0);
System.out.println(Newton.sqrt(num, 5));

и всегда возвращает 0E-100 (независимо от предоставленной точности), но мне нужно 0,00000и т.д. Спасибо

1 Ответ

0 голосов
/ 17 декабря 2011

Если ваш первый фрагмент кода является частью метода Newton.sqrt, то я принимаю как должное, что этот возврат не выполняется.Вы можете взглянуть на документацию BigDecimal.equals.

Что будет работать так:

else if(number.signum() == 0)
    return BigDecimal.ZERO.setScale(precision);

Это, конечно, работает, только если метод не возвращает в какой-то другой return до этого, а number действительно точно ноль (игнорируя масштаб здесь).Поскольку Newton намекает на алгоритм приближения, это, скорее всего, не так.Если эти предположения верны, то вы должны пересмотреть свои требования.

...