当前位置:  开发笔记 > 编程语言 > 正文

C print -nan中的sqrt函数

如何解决《Cprint-nan中的sqrt函数》经验,为你挑选了1个好方法。

在做一些代码练习时,我观察到由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

为什么会发生这种情况.



1> Tom Karzes..:

看数字: b是4,l是5.所以b*b - l*l是-9.什么是-9的平方根?这是一个虚数,但sqrt不支持虚数结果,因此结果是nan(不是数字).这是一个域错误.解决方案:不要传递否定参数sqrt.

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有