跳到主要内容

C++ modf() 分解浮点数函数

正如提到的,modf() 将一个数字分解为整数部分和小数部分。这个函数返回小数部分,并将整数部分存储在传递给 modf() 作为参数的指针所指的地址中。

这个函数定义在 <cmath> 头文件中。

modf() 函数原型 [C++ 11 标准起]

double modf (double x, double* intpart);
float modf (float x, float* intpart);
long double modf (long double x, long double* intpart);
double modf (T x, double* intpart); // T 是一个整数类型

modf() 参数

modf() 接受两个参数:

  • x - 要分解为两部分的值。
  • intpart - 指向一个对象(与 x 同类型)的指针,其中存储了与 x 符号相同的整数部分。

modf() 返回值

modf() 函数返回传递给它的参数的小数部分。

示例 1:modf() 如何工作?

#include <iostream>
#include <cmath>
using namespace std;

int main ()
{
double x = 14.86, intPart, fractPart;

fractPart = modf(x, &intPart);
cout << x << " = " << intPart << " + " << fractPart << endl;

x = -31.201;
fractPart = modf(x, &intPart);
cout << x << " = " << intPart << " + " << fractPart << endl;

return 0;
}

当你运行程序时,输出将会是:

14.86 = 14 + 0.86
-31.201 = -31 + -0.201

示例 2:第一个参数为整数值的 modf()

#include <iostream>
#include <cmath>
using namespace std;

int main ()
{
int x = 5;
double intpart, fractpart;
fractpart = modf(x, &intpart);
cout << x << " = " << intpart << " + " << fractpart << endl;

return 0;
}

当你运行程序时,输出将会是:

5 = 5 + 0