Используйте std::modf
:
double intpart;
modf(value, &intpart) == 0.0
Не конвертируйте в int
! Число 1.0e+300
также является целым числом.
Редактирование: как указывает Пит Киркхам, передавая 0, поскольку второй аргумент не гарантируется стандартом для работы, требуя использования фиктивной переменной и , к сожалению, делает код намного менее изящным.