#include <stdio.h>
#include <math.h>
int main(void)
{
double param, fractpart, intpart;
param = 123.456;
fractpart = modf(param , &intpart);
if (fractpart != 0.0) {
printf("true\n");
} else {
printf("false\n");
}
return 0;
}
注意的是,由於舍入誤差和截斷,例如,計算過程中出現數值誤差:
0.11 - (0.07 + 0.04) != 0.0
您可以控制這些舍入誤差(根據您的比例調整EPSILON
的值):
#include <stdio.h>
#include <math.h>
#define EPSILON 0.00000000001
int almost_zero(double x)
{
return fabs(x) < EPSILON;
}
int main(void)
{
double param, fractpart, intpart;
param = 0.11 - (0.07 + 0.04);
fractpart = modf(param , &intpart);
if (!almost_zero(fractpart)) {
printf("true\n");
} else {
printf("false\n");
}
return 0;
}
它是C語言嗎? – 2014-09-30 07:22:23