От cplusplus.com:
double modf (double x , double* intpart);
Разбить на дробные и неотъемлемые части
Разбивает x на целую и дробную части.
Целочисленная часть хранится в объекте, указанном intpart, и
дробная часть возвращается функцией.Обе части имеют тот же знак, что и х.
После этой операции мне больше не нужно исходное значение x. Есть ли причина, по которой я не могу или не должен использовать x для второго аргумента?
Пример:
double pi = 3.14159
double pi_fraction = modf(pi, &pi);
// now pi_fraction = .14159 and pi = 3.0
В документации, которую я обнаружил, нет ничего, что явно запрещало бы это, но и явно не позволяло.
Задача ещё не решена.
Других решений пока нет …