在做一些代码练习时,我观察到由sqrt函数引起的异常输出,
代码是,
#include#include int main() { double l,b,min_r,max_r; int i; scanf("%lf %lf",&b,&l); printf("%lf %lf\n",sqrt(l*l+b*b),sqrt(b*b-l*l)); return(0); }
输出:
4 5 6.403124 -nan
为什么会发生这种情况.
看数字: b
是4,l
是5.所以b*b - l*l
是-9.什么是-9的平方根?这是一个虚数,但sqrt
不支持虚数结果,因此结果是nan(不是数字).这是一个域错误.解决方案:不要传递否定参数sqrt
.