sqrt()返回INF

Mur*_*los 3 c math.h sqrt

嗨我正在尝试用长双打做一些计算,我从sqrt()函数得到INF.

码:

#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;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

peo*_*oro 8

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

使用sqrtl该获取并返回一个long double.