Как проверить, целое ли число типа double
Задача
Обработайте некорректные данные (ничего не ввёл, отрицательные число, 0, нецелое число), выведя соответствующие уведомления.
Я сделал всё, кроме "нецелого числа". Как сделать так, чтобы при вводе нецелого числа программа выдавала сообщение?
Ответы (1 шт):
Первый способ:
if (str.contains(".") || str.contains(",")) {
...
}
Второй способ:
try {
Integer.parseInt(str);
} catch (NumberFormatException nfe) {
...
}
Третий способ:
if (n % 1 != 0) {
...
}
Четвёртый способ:
if ((int)n != n) {
...
}
Первый способ не работает с числами в экспоненциальной записи, содержащими точку (или запятую), такими как 1.1E1, что равно 11.
Второй способ помимо этого не работает вообще ни с какими числами, представленными в экспоненциальной записи.
Все вышеперечисленные способы не работают с +-Infinity и NaN. Если такие "числа" могут возникнуть при вводе, на них следует проверить заранее.
