函数
<cmath> <ctgmath>

modf

double modf (double x, double* intpart);
     double modf  (double x     , double* intpart);      float modff (float x      , float* intpart);long double modfl (long double x, long double* intpart);
     double modf (double x     , double* intpart);      float modf (float x      , float* intpart);long double modf (long double x, long double* intpart);
     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);       // additional overloads
分解为小数和整数部分
x 分解为整数部分和小数部分。

整数部分存储在 intpart 指向的对象中,小数部分由函数返回。

两个部分的符号都与 x 相同。

此头文件 (<cmath>) 中为整数类型提供了额外的重载:这些重载在计算前有效地将 x 转换为 double(为任意整数类型T 定义)。

参数

x
要分解的浮点数值。
intpart
指向一个对象(与 x 类型相同)的指针,整数部分将以与 x 相同的符号存储在此处。

返回值

x 的小数部分,符号相同。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
/* modf example */
#include <stdio.h>      /* printf */
#include <math.h>       /* modf */

int main ()
{
  double param, fractpart, intpart;

  param = 3.14159265;
  fractpart = modf (param , &intpart);
  printf ("%f = %f + %f \n", param, intpart, fractpart);
  return 0;
}

输出

3.141593 = 3.000000 + 0.141593


另见