我正在尝试实现用户定义的函数来测试数字是否为整数:
#include <iostream>
#include <typeinfo>
using namespace std;
bool integer(float k){
if (k==20000) return false;;
if (k==(-20000)) return false;
if (k==0) return true;
if (k<0) return integer(k+1);
else if(k>0) return integer (k-1);
return false;
}
int main(){
float s=23.34;
float s1=45;
cout<<boolalpha;
cout<<integer(s)<<endl;
cout<<integer(s1)<<endl;
return 0;
}
所以这个想法是,如果一个数字是一个整数,不管它是负数还是正数,如果我们将它减一或加一,我们必须得到零,但问题是,我们如何创建上和增加和减少的下限?
原文由 user466534 发布,翻译遵循 CC BY-SA 4.0 许可协议
此解决方案应适用于
k
的所有可能值。我很确定在这种情况下,您可以使用==
安全地比较浮点数。尝试仔细命名函数。
integer
没有给出任何线索它实际上 做 了什么,所以我把函数名改成了更有意义的名字。对于未来,测试一个数字是否为整数应该是一个非常简单的操作,所以你应该有一个强烈的 _感觉_,最好的解决方案将非常简单。我希望你意识到你原来的解决方案是荒谬的,原因有很多(最大的原因:在绝大多数情况下它会导致堆栈溢出)。