首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sqrt()返回INF

sqrt()返回INF
EN

Stack Overflow用户
提问于 2011-02-02 02:34:19
回答 2查看 2.9K关注 0票数 3

嗨,我正在尝试做一些长双精度的计算,并且我正在从sqrt()函数中获得INF。

代码:

代码语言:javascript
复制
#include <math.h>
#include <stdio.h>

int main()
{
    long double bigNUMBER;
    long double p1,p2,p3;
    long double p4;

    p1 = 4.769547e+155;
    p2 = 1.012994e+170;
    p3 = 1.714812e+169;

    p4 = p1*p1 + p2*p2 + p3*p3;

    bigNUMBER = sqrt(p4);

    printf("product: %Lf\n\n", p4); // 1055562645989439942507809393771156765931135...

    printf("\n result %Lf\n\n", bigNUMBER); // INF

    return 0;
}

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-02 02:37:25

sqrt接受并返回一个double。当你调用它时,你的long double会被转换成一个double,它不能存储这么大的数字,因此会得到无穷大的值。

使用接受并返回long doublesqrtl

票数 8
EN

Stack Overflow用户

发布于 2011-02-02 02:39:44

当参数也为INFINITY时,sqrt将返回INFINITY;例如:

代码语言:javascript
复制
#include <stdio.h>
#include <math.h>
int main()
{
  printf("%g %g\n", INFINITY, sqrt(INFINITY));
  return 0;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4866511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档