如何在 C++ 中检查浮点变量是否包含实数?
例如:-1.#IND000我的价值
如何判断是实数还是类似上面的数字。
转换为布尔值(通过任何逻辑运算符显式为 o)将为所有非“真实”或为 0 的值给出“假”,因此
bool is_number(double d)
{ return d || d==0; }
应该没事。
有类似std::isnan
header的功能<cmath>
。
一个很简单的方法。。
float a=3.9;
long b;
b=a;
if ((float)b==a)
cout<<"Non-real, i.e. integer";
else
cout<<"REAL";
true
如果它是一个数字,则以下这些返回,false
否则:
bool test1(double d) { return d == d; }
bool test2(double d) { return d * 0.0 == 0.0; }
您可以在 Visual Studio 中使用“_isnan”(它包含在 float.h 中):
float T;
T=std::numeric_limits<double>::quiet_NaN(); //YOUR CALCS HERE!!
if (_isnan(T)) {
printf("error\n");
}