我想继续计算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;
}
感谢您的任何帮助!
你的问题是如何判断划分的结果是整数。这意味着检查,如果分子是分母的倍数。这是很简单 - 找到最接近的倍增器,通过它乘以分母,看看你得到的分子。
所以:
while (true){
num = 1 + (z * tn);
d = num / e;
if (d * e != num)
z++;
}else{
break;
}
只是比较反对,当你详谈你得到的价值的价值。
float f = ...
float precision = 0.00001;
if (fabsf(f - roundf(f)) < precision) {
printf("integer\n");
} else {
printf("not integer\n");
}