如何不断检查计算出的数字是否为整数?

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;
    }