如何确定两个整数的结果是否为浮点数的整数?
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
}
请注意,number1
和 number2
必须是整数才能使模运算工作。
您还必须将至少一个整数转换为 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;
当我除以两个整数时,我试图确定结果是否为整数。我该怎么做?
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
}
请注意,number1
和 number2
必须是整数才能使模运算工作。
您还必须将至少一个整数转换为 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;