2

如何在 C++ 中检查浮点变量是否包含实数?

例如:-1.#IND000我的价值

如何判断是实数还是类似上面的数字。

4

5 回答 5

2

转换为布尔值(通过任何逻辑运算符显式为 o)将为所有非“真实”或为 0 的值给出“假”,因此

bool is_number(double d)
{ return d || d==0; } 

应该没事。

于 2013-05-09T06:33:18.837 回答
2

有类似std::isnanheader的功能<cmath>

于 2013-05-09T06:34:28.160 回答
1

一个很简单的方法。。

float a=3.9;
long b;
b=a;
if ((float)b==a)
    cout<<"Non-real, i.e. integer";
else
    cout<<"REAL";
于 2013-05-09T07:01:45.697 回答
1

true如果它是一个数字,则以下这些返回,false否则:

bool test1(double d) { return d == d; }
bool test2(double d) { return d * 0.0 == 0.0; }

这些是关于Checking if a double (or float) is nan in C++的一个很好的讨论。

于 2013-05-09T06:52:21.687 回答
1

您可以在 Visual Studio 中使用“_isnan”(它包含在 float.h 中):

float T;

T=std::numeric_limits<double>::quiet_NaN(); //YOUR CALCS HERE!!

if (_isnan(T)) {
    printf("error\n");
}
于 2014-10-07T01:23:27.993 回答