如何不断检查计算出的数字是否为整数?
How to keep checking if a calculated number is an integer or not?
我想继续计算 d
直到它是一个整数,如果它不是整数则将数字递增 1,如果它是则 return 整数。我试过了,但我一直把浮点数 returned 作为整数。 (例如 19.4 将 returned 为 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;
}
感谢您的帮助!
只需将该值与四舍五入后得到的值进行比较即可。
float f = ...
float precision = 0.00001;
if (fabsf(f - roundf(f)) < precision) {
printf("integer\n");
} else {
printf("not integer\n");
}
你的问题是如何判断除法的结果是否为整数。这意味着检查分子是否是分母的倍数。这很简单——找到最接近的乘数,用它乘以分母,然后看看是否得到分子。
所以:
while (true){
num = 1 + (z * tn);
d = num / e;
if (d * e != num)
z++;
}else{
break;
}
我想继续计算 d
直到它是一个整数,如果它不是整数则将数字递增 1,如果它是则 return 整数。我试过了,但我一直把浮点数 returned 作为整数。 (例如 19.4 将 returned 为 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;
}
感谢您的帮助!
只需将该值与四舍五入后得到的值进行比较即可。
float f = ...
float precision = 0.00001;
if (fabsf(f - roundf(f)) < precision) {
printf("integer\n");
} else {
printf("not integer\n");
}
你的问题是如何判断除法的结果是否为整数。这意味着检查分子是否是分母的倍数。这很简单——找到最接近的乘数,用它乘以分母,然后看看是否得到分子。
所以:
while (true){
num = 1 + (z * tn);
d = num / e;
if (d * e != num)
z++;
}else{
break;
}