当我划分两个整数时,我正在尝试确定结果是否为整数。我该怎么做?
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 ...我做错了什么? 编辑: 得到它的工作...编译器有问题我猜...
答案 0 :(得分:8)
您可以使用模数运算符(%
)轻松查看,运算符在一个数字除以另一个数字后找到余数:
if(number1 % number2 == 0)
{
// result of division is integral
// or in other words: number1 / number2 = whole number
}
请注意,number1
和number2
必须是整数才能使模数起作用。
您还必须将至少一个整数投射到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;