编写if语句以标识float变量是否将值保留在小数点后。
示例代码:
AAA = 123.456
if( AAA has value behind decimal = true)
{
printf("true")
}
// ...or user input changes value of AAA...
AAA = 123.000
if( AAA has value behind decimal = true)
{
printf("false")
}
有什么帮助吗?
最佳答案
#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 - 小数点后浮点值后面的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26114949/