如何确定两个整数的结果是否为浮点数的整数?

How to determine if result of two integer numbers is integer of float?

当我除以两个整数时,我试图确定结果是否为整数。我该怎么做?

float result;
int number1, number2;
cout<<"Give me number 1 and 2"<<endl;
cin>>number1;
cin>>number2;
result = number1 / number2;
if(result == int)
{
   cout<<"The numbers can be devided"<<endl;
}else cout<<"The numbers can't be devided"<<endl;

我收到错误消息,因为您不能那样做,有人可以帮帮我吗?这让我很烦,每个 post 都告诉我,如何检查输入是否为整数,而不是结果。我不关心输入,我想知道结果是否为整数。感谢您的帮助!

编辑:

所以我的函数如下所示:

int funkcijaDva()
{
    int popizdobom = 0;
    int tri = 3;
    int tristo = 300;
    int tritisoc = 3000;
    float result;
    for(; tristo!=tritisoc;tristo++)
    {
        result = (int)tristo / tri;
        if(tri % tristo == 0)
        {
            popizdobom++;
        }
    }
    return popizdobom;
}

并且 popizdobom 的结果始终为 0...我做错了什么吗? 编辑: 让它工作...我猜编译器有问题...

您可以使用 modulo 运算符 (%) 轻松检查它,该运算符计算一个数除以另一个数后的余数:

if(number1 % number2 == 0) 
{
  // result of division is integral 
  // or in other words: number1 / number2 = whole number
}

请注意,number1number2 必须是整数才能使模运算工作。

您还必须将至少一个整数转换为 float,才能得到 float 作为除法结果。

float result = (float)number1 / number2;

您可以在此处阅读有关 modulo 运算符的更多信息: https://en.wikipedia.org/wiki/Modulo_operation


编辑: 采纳了以下评论中的一些建议。

如果您想实际计算除法,则需要以浮点数计算。你可以这样写

double f = 1.0 * number1 / number2;

1.0 强制除法以浮点数进行。

然后您可以通过计算 ceil(f) == f 来检查 f 是否为整数。 (请注意,这是精确浮点比较的合法用法)。

另一方面,如果您需要知道 number1 / number2 是否会 产生余数,则计算 number1 % number2。当且仅当 number1 不完全除以 number2.

时,这将是非零的

您可以使用此代码:

int result;
int number1, number2;
cout<<"Give me number 1 and 2"<<endl;
cin>>number1;
cin>>number2;
result = number1 % number2;
if(result == 0)
{
   cout<<"The numbers can be devided"<<endl;
}else cout<<"The numbers can't be devided"<<endl;