nan:
nan 其实就是 “not a number”(不是一个数字)的缩写,其通常是由非法的浮点运算导致的,例如
- 对负数开平方;
cout << sqrt(-2) << endl;
- 对负数取对数;
cout << log(-1) << endl;
- 0.0 / 0.0;
cout << 0.0 / 0.0 << endl;
inf:
inf 其实就是 “infinity”(无限)的意思,即出现这个数的时候说明此次计算超出了计算机可以表示浮点数的最大范围也就是溢出,例如
- 除法中除数为0的情况
int a=7,b=0;
cout << a/b << endl;
总结:
当你遇到inf的时候就检查是否发生了结果溢出
当你遇到nan的时候就检查是否发生了非法的浮点运算