Как в С++ проверить double на целочисленность?

В C++ можно проверить, является ли число с плавающей точкой double целым с помощью двух подходов.

Первый подход заключается в использовании остатка от деления числа на 1. Если остаток равен нулю, то число является целым. В обратном случае, если остаток не равен нулю, то число имеет дробную часть и, следовательно, не является целым. Например:

double number = 5.0;

if (number - trunc(number) == 0) {
    std::cout << "Число " << number << " является целым." << std::endl;
} else {
    std::cout << "Число " << number << " имеет дробную часть." << std::endl;
}

В этом примере мы сравниваем разницу между числом и его целочисленной частью (вычисленной с использованием функции trunc()) с нулем.

Второй подход состоит в использовании функций fmod() или remainder(), которые возвращают остаток от деления двух чисел. Если остаток равен нулю, то число является целым. В противном случае, если остаток не равен нулю, то число имеет дробную часть. Например:

#include <cmath>

double number = 5.0;

if (std::fmod(number, 1.0) == 0) {
    std::cout << "Число " << number << " является целым." << std::endl;
} else {
    std::cout << "Число " << number << " имеет дробную часть." << std::endl;
}

В этом примере мы используем функцию fmod() с аргументами number и 1.0, чтобы получить остаток от деления числа на 1.0.

Оба подхода дают одинаковый результат для чисел, являющихся целыми, и разный результат для чисел с дробной частью. Выбор подхода зависит от вашего предпочтения и особенностей задачи.