Функция modf
Функция modf разбивает число с плавающей точкой
на целую и дробную части. В первый параметр мы передаем
исходное число, а во второй - указатель на переменную,
в которую будет записана целая часть. Функция возвращает
дробную часть числа, сохраняя знак исходного значения.
Синтаксис
double modf(double x, double* intpart);
float modff(float x, float* intpart);
long double modfl(long double x, long double* intpart);
Функция возвращает дробную часть числа x,
а целую часть записывает по адресу, переданному
во втором параметре intpart. Дробная часть
имеет тот же знак, что и исходное число.
Пример
Давайте разобьем число 3.14 на целую
и дробную части:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double intpart;
double fracpart = modf(3.14, &intpart);
cout << "Integer: " << intpart << endl;
cout << "Fractional: " << fracpart << endl;
return 0;
}
Результат выполнения кода:
"Integer: 3"
"Fractional: 0.14"
Пример
Давайте разобьем отрицательное число -5.75
на целую и дробную части:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double intpart;
double fracpart = modf(-5.75, &intpart);
cout << "Integer: " << intpart << endl;
cout << "Fractional: " << fracpart << endl;
return 0;
}
Результат выполнения кода:
"Integer: -5"
"Fractional: -0.75"
Как видите, дробная часть сохраняет знак исходного числа.
Пример
Давайте разобьем целое число 10.0
на целую и дробную части:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double intpart;
double fracpart = modf(10.0, &intpart);
cout << "Integer: " << intpart << endl;
cout << "Fractional: " << fracpart << endl;
return 0;
}
Результат выполнения кода:
"Integer: 10"
"Fractional: 0"