如何确定两个整数的结果是否是float的整数?

时间:2015-11-02 13:33:54

标签: c++ integer

当我划分两个整数时,我正在尝试确定结果是否为整数。我该怎么做?

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;

我收到错误,因为你不能这样做,有人能帮我一把吗?它让我烦恼,每个帖子都告诉我,如何检查输入是否为整数,而不是结果。我不关心输入,我想知道结果是否为整数。谢谢你的帮助!

编辑:

所以我的功能看起来像这样:

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 ...我做错了什么? 编辑: 得到它的工作...编译器有问题我猜...

3 个答案:

答案 0 :(得分:8)

您可以使用模数运算符(%)轻松查看,运算符在一个数字除以另一个数字后找到余数:

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

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

答案 1 :(得分:0)

如果您想要实际评估该部门,那么您需要以浮点方式进行评估。你可以写

来做到这一点

double f = 1.0 * number1 / number2;

1.0强制分裂以浮点形式发生。

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

另一方面,如果您需要知道number1 / number2 是否会产生余数,请评估number1 % number2。如果且仅当number1未完全按number2划分时,此值才为非零。

答案 2 :(得分:0)

您可以使用此代码:

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;