Я пытался реализовать это какое-то время, и я не могу заставить его делать wokr правильно. Любая помощь будет принята с благодарностью?Как проверить, действительно ли BigDecimal?
ответ
Умножить на 10 до тех пор, пока вы достигли желаемой точности (количество знаков после.), А затем использовать побитовое сравнение
public Boolean isEven (BigDecimal decimal, int precision) {
double d = decimal.doubleValue();
int i = 0;
while (++i <= precision)
d *= 10;
return ((int) d & 1) == 0;
}
boolean isEven = ! decimalValue.toBigInteger().testBit(0)
Это только просмотр целочисленной части числа, в вопросе комментариев, что кажется, что требуется решение, которое также смотрит на дробную часть. –
@ increment1: из комментариев, которые были там, когда я ответил на вопрос, я понял, что OP хочет отбросить дробную часть. Теперь это выглядит иначе. Трудно ответить на плохо сформированный вопрос, и большую часть времени я даже не пытаюсь. На этот раз я сожалею об этом. –
Полностью понятно, так как я еще не уверен, что вопрос ясен кому-либо.Я прокомментировал это только потому, что это был принятый ответ, если читатели не знали, что преобразование большого десятичного числа в большое целое будет отбрасывать дробную часть (хотя это, вероятно, очевидно). –
только целые числа могут быть четными. См: http://en.wikipedia.org/wiki/Parity_(mathematics) BigDecimal обрабатывает десятичные, которые не являются четными числами http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigDecimal.html
Если необходимо, вы можете преобразовать большой десятичное до ближайшего возможного Integer:
BigDecimal bd;
bd = 123.456;
int i;
// Convert the BigDecimal to an Integer
i = bd.intValue();
Или, если вы хотите быть предупреждены, если информация теряется (часть после десятичной точки), а затем попробовать
try {
i = intValueExact();
} catch (Exception e) {
System.out.println("Not a whole number: " + e.getMessage());
}
Какой будет бросить ArithmeticException
если теряется информация.
Термин «даже» обычно не применяется к десятичных чисел, но если вы просто хотите, чтобы проверить, если последняя цифра десятичного представления дробного числа содержит 2,4,6 или 8, то вы можете сделать ниже:
BigDecimal decimal = new BigDecimal("123.456");
BigInteger integer = decimal.stripTrailingZeros().unscaledValue();
boolean isEven = !integer.testBit(0);
Этот метод позволяет избежать потери точности или каких-либо переполнение как это может произойти при преобразовании BigDecimal в int, lon г или двойной.
- 1. Как проверить, действительно ли вектор действительно восстановлен?
- 2. Как проверить, действительно ли userinput?
- 3. Как разобрать рубин BigDecimal проверить?
- 4. Как можно проверить масштаб BigDecimal?
- 5. проверить, действительно ли соединение mysql
- 6. проверить, действительно ли компиляция завершена?
- 7. Проверить, является ли значение BigDecimal целочисленным значением
- 8. QT проверить, действительно ли интерфейс
- 9. ngRoute проверить, действительно ли маршрут
- 10. zlib.output_compression off - Как проверить, действительно ли сжатие PHP действительно отключено?
- 11. Как проверить, действительно ли загружена веб-страница?
- 12. Как проверить, действительно ли файл UTF-8?
- 13. Как проверить, действительно ли мышь оставила QWidget?
- 14. Как проверить, действительно ли хранилище ключей?
- 15. Как проверить, действительно ли письмо является действительным?
- 16. как проверить, действительно ли база данных обновлена?
- 17. Как проверить, действительно ли приложение работает?
- 18. Как проверить, действительно ли число равно
- 19. Как проверить, действительно ли изображение является образом?
- 20. Как проверить, действительно ли документ проиндексирован?
- 21. Как проверить, действительно ли полное Div?
- 22. Как проверить, действительно ли async/await async?
- 23. Как проверить, действительно ли файл jar?
- 24. Как проверить, действительно ли введена дата рождения?
- 25. Действительно ли это проверить, существует ли db_row?
- 26. Как проверить, является ли значение поля BigDecimal отрицательным в JasperReports
- 27. Как проверить количество цифр из BigDecimal?
- 28. Попытка проверить, действительно ли значение int действительно int
- 29. способы проверить, действительно ли время datetime
- 30. Действительно ли необходимо проверить методы контроллера?
Определите «ровность», если это не целое число. – Mysticial
Даже означает, что он заканчивается 0, 2, 4, 6 или 8. – jersam515
Итак, '13.110' даже и' 13.11' нет? Вы можете уточнить? – Mysticial