Как сравнить BigDecimal, но примерно?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как сравнить BigDecimal, но примерно?

Сообщение Anonymous »

У меня есть этот код:

Код: Выделить всё

BigDecimal d = ...;
if (d.compareTo(Expression.PI) == 0) {
//do something
}
где Expression.PI — это число Пи, округленное до сотой десятичной дроби.

Но мне не нужно сравнивать, если d равно пи с точностью до 100 десятичных знаков, но, скажем, только до 20-го знака после запятой. Другими словами, как проверить, примерно ли d равно пи?

Я пробовал

Код: Выделить всё

Expression.PI.setScale(20, RoundingMode.HALF_UP).compareTo(d.setScale(20, RoundingMode.HALF_UP)) == 0;
и

Код: Выделить всё

Expression.PI.setScale(20, RoundingMode.HALF_UP).compareTo(d) == 0;
Но ни один из этих двух способов, похоже, не работает. Что я здесь делаю не так?

Подробнее здесь: https://stackoverflow.com/questions/380 ... roximately
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»