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

时间:2017-10-07 20:30:11

标签: c rsa private-key

我想继续计算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;
}

感谢您的帮助!

2 个答案:

答案 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");
}