Я даю пользователю возможность самостоятельно устанавливать точность (масштаб) после десятичной дроби для всего приложения, например,
Точность, установленная пользователем: 3
число: 123,9991
отображение на веб-сайте: 124,000
Теперь я также предоставляю пользователю возможность поиска по набору чисел.
Если он задает - от 123 до 123 -- Нет результата (ожидается)
Если он установит - от 124 до 124 --- Нет результата (Не ожидается)
Я думаю использовать BigDecimal setScale (), который является Javaэквивалент Javascript's Number (значение) .toFixed (точность)
Как выполнить обратный инжиниринг набора для получения желаемого результата?
Я пробовал следующее:
- MongoDb $ round ---- но это даст проблемы с производительностью.
Я пытался подставить или добавить общее целое число перед поиском, но это не работает для некоторых угловых сценариев. (Что является оптимальным способом)
static BigDecimal getModMinNumber( BigDecimal minNumber, Integer precision)
{
minNumber.subtract(new BigDecimal("0.00050")); // for precision 3
return minNumber.setScale(precision, RoundingMode.HALF_EVEN);
}
static BigDecimal getModMaxNumber( BigDecimal maxNumber, Integer precision)
{
maxNumber.add(new BigDecimal("0.00050")); // for precision 3
return maxNumber.setScale(precision, RoundingMode.HALF_EVEN);
}
Я ожидаю, что он будет правильно искать и получать результат, ожидаемый пользователем.