我想继续计算d
直到它是一个整数,如果它不是一个整数然后将数字增加1,如果它然后返回整数。我试过这个,但我一直得到一个整数返回的浮点数。 (例如19.4将返回19但我只想继续计算它直到我得到一个整数)。我尝试了以下代码:
int calcD(int tn, int e){
int z;
float d;
z = 1;
while (true){
d = (1+(z*tn))/e;
if (fmodf(d, 1)!= 0){
z++;
}else{
break;
}
}
return d;
}
感谢您的帮助!
答案 0 :(得分:2)
您的问题是如何判断除法的结果是否为整数。这意味着检查分子是否是分母的倍数。这很简单 - 找到最接近的乘数,将分母乘以它,看看你是否得到了分子。
所以:
while (true){
num = 1 + (z * tn);
d = num / e;
if (d * e != num)
z++;
}else{
break;
}
答案 1 :(得分:0)
只需将该值与您舍入时获得的值进行比较。
float f = ...
float precision = 0.00001;
if (fabsf(f - roundf(f)) < precision) {
printf("integer\n");
} else {
printf("not integer\n");
}