Не понимаю как в данном коде сделать проверку на дробность числа. Пробовал и if (x%1 !=0) и (x%2 ==1 && x%2 !=0) и через NumberFormat. Не понимаю

 import java.util.Scanner;
public class Loop1 {
    public static void main(String[] args) throws Exception {
        Loop1 l1 = new Loop1();
        l1.scannerNumber();
    }
    public void scannerNumber() {
        Scanner scan = new Scanner(System.in);
        System.out.println("Введите число: ");
        long x = 0;
        long result = 1;
        int x1 = 0;
        int x2 = 0;
        while (x1 == 0 || x1 <0) {
            try {
                if (x2 == 5) {
                    System.out.println("Слишком много попыток. Программа закрывается");
                    System.exit(0);
                }
                x = Long.parseLong(scan.nextLine());
                x1++;
                if (x<0) {
                    System.out.println("Вы ввели отрицательное число");
                    x1--;
                    x2++;
                }
            } catch (Exception e) {
                System.out.println("Повтори попытку: ");
                x2++;
            }
        }
        if (x == 0) {
            System.out.println("Result = " + result);
            return;
        }
            for (int i = 0; i < x; i++) {
                if (result < 0) {
                    System.out.println("У вас получилось переполнение " + result);
                    break;
                } else if (result > 0){
                    System.out.println("Result = " + result);
                    result *= (x - i);
                }
            }
    }
}

Ответы (3 шт):

Автор решения: стасевич
Double number = 3.14;
        if (number instanceof Double) {
            System.out.println("дробное");
        } else System.out.println("не дробное");

//
double d = 0;

        if (scan.hasNextDouble()) {
            d = scan.nextDouble();

и при вводе с клавиатуры дробного числа, надо ставить запятую, а не точку.

1,13
→ Ссылка
Автор решения: Andrew Bystrov

Самый простой вариант - отбросить дробную часть (кастом к лонгу) и потом проверить, что разница между исходным числом и число, без дробной части больше 0

double x = 3.14;
if (Math.abs((long) x - x) > 0) {
    System.out.println("число дробное");
} else {
    System.out.println("число целое");
}

пример выше скажет, что число 3.00 - целое (что, правильно)

→ Ссылка
Автор решения: Stanislav Volodarskiy

Math.rint возвращает ближайшее целое значение, но тип сохраняется double. Это позволяет избежать проблем с переполнением при приведении к целому типу больших значений:

    double x = Double.parseDouble(scan.nextLine());
    if (Math.rint(x) != x) {
        System.out.println("число дробное");
    } else {
        System.out.println("число целое");
    }
→ Ссылка