如何继续检查,如果计算出的数字为整数或不?

问题描述 投票:-2回答:2

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

感谢您的任何帮助!

c rsa private-key
2个回答
2
投票

你的问题是如何判断划分的结果是整数。这意味着检查,如果分子是分母的倍数。这是很简单 - 找到最接近的倍增器,通过它乘以分母,看看你得到的分子。

所以:

while (true){
    num = 1 + (z * tn);
    d = num / e;
    if (d * e != num)
        z++;
    }else{
        break;
    }

0
投票

只是比较反对,当你详谈你得到的价值的价值。

float f = ...
float precision = 0.00001;

if (fabsf(f - roundf(f)) < precision) {
    printf("integer\n");
} else {
    printf("not integer\n");
}
© www.soinside.com 2019 - 2024. All rights reserved.