C中的modf函数

时间:2017-03-21 01:12:20

标签: c

我一直在研究modf()函数,我在理解如何使用它时遇到了一些麻烦。

代码示例

#include<stdio.h>
#include<math.h>

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

   x = 8.123456;
   fractpart = modf(x, &intpart);

   printf("Integral part = %lf\n", intpart);
   printf("Fraction Part = %lf \n", fractpart);

   return(0);
}

困惑:我感到困惑的部分是fractpart。我无法理解它是如何工作的,因为我只想存储十进制数的整数部分。另外,double

的重点是什么

2 个答案:

答案 0 :(得分:2)

首先,double非常容易理解。 Float仅存储七位数字,double存储15-16位数字。更多细节here

现在为modfmodf中的fractpart =,首先检查x。几乎扫描它。执行此操作后,它会将所有内容存储在inpart的小数点之前。之后,剩下的内容存储在小数fractpart中。要总结所有内容modf就像scanf一样。这就是我们将&放在intpart之前的原因。

答案 1 :(得分:1)

  

我只想存储十进制数的整数部分。

double modf(double value, double *iptr); 
  

modf函数将参数值分解为整数和小数部分,每个部分与参数具有相同的类型和符号。它们将整数部分存储在iptr指向的对象中。 C11dr§7.12.6.121

简化代码如下。无需fractpart甚至intpart。只需将x的整数部分存储回x

即可
#include<stdio.h>
#include<math.h>

int main () {
   double x = 8.123456;
   modf(x, &x);
   printf("Integral part = %f\n", x);
}