我一直在研究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
。
答案 0 :(得分:2)
首先,double
非常容易理解。 Float
仅存储七位数字,double
存储15-16位数字。更多细节here
现在为modf
。 modf
中的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);
}