C++-C/C++中如何判断一个double数结果是越界还是非法操作

C++-C/C++中如何判断一个double数结果是越界还是非法操作

归属感 发布于 2017-03-27 字数 276 浏览 1366 回复 1

在编写程序的时候,输出一个double型数字时,可能会遇到输出的是一个奇怪的数的情况,比如1.#INF、-1.#INF或者是-1.#IND。前者代表计算所得的数超过了double能够表示的范围,后者表示非法操作比如:0/0.

那么,当运算出现问题的时候如何判断所得结果到底是这两种情况中的哪一种呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

归属感 2017-05-03 1 楼

这里面有个方法,test值无效的时候,test!=test是true。
float test = acos(1.0001f)
if (test != test)
{
cout << "错误出现" << endl;
}

还有使用float.h中一个函数_isnan即可:
int _isnan(double x);
http://www.cnblogs.com/mlv5/archive/2012/05/14/2498828.html