C++ c++;给出inf或零的长双精度的计算

C++ c++;给出inf或零的长双精度的计算,c++,vector,cmath,long-double,C++,Vector,Cmath,Long Double,所以我创建了一个程序,它接受了两个长的双倍数和一些特殊形式的计算。但问题是,我的输出是inf,或者在某些编译器中是0。。 因此,只有当我输入指数值,比如说输入1.11224e+2121 1.11224e+2121时,才会出现错误 然后我得到inf或0,但如果得到2.45.9之类的值,我会得到适当的值。我该如何解决这个问题 这是我的密码 #include <iostream> #include <cmath> #include <vector> using na

所以我创建了一个程序,它接受了两个长的双倍数和一些特殊形式的计算。但问题是,我的输出是inf,或者在某些编译器中是0。。 因此,只有当我输入指数值,比如说输入1.11224e+2121 1.11224e+2121时,才会出现错误 然后我得到inf或0,但如果得到2.45.9之类的值,我会得到适当的值。我该如何解决这个问题

这是我的密码

#include <iostream>
#include <cmath>
#include <vector>
using namespace std;

int main()
{
    long double a,b,add=0,mean=0;
    cin>>a>>b;
    vector<long double> vector;
    vector.push_back(a);
    vector.push_back(b);
    mean=(vector[0]+vector[1])/2;
    for (int k = 0; k < 2; k++)
    {
        add= add+ pow((vector[k] - mean), 2);
    }
    cout<<add/2;

    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
长双a,b,相加=0,平均值=0;
cin>>a>>b;
向量;
向量。推回(a);
向量。推回(b);
平均值=(向量[0]+向量[1])/2;
对于(int k=0;k<2;k++)
{
add=add+pow((向量[k]-平均值),2);
}

CouTee类型变量称<代码>双,int,long…< />代码存储能力有限。需要确定输入范围并相应地选择适当类型。类型<代码>未签名长long <代码>是接受C++中最大数的STL变量。如果您想要更大的,则需要使用外部<代码>大INT/COD。e> 类型。请检查
std::numeric_limits::max()
的值。
1.11224e+2121
(111224后跟2116个零)的值似乎非常大。我相信该限制大约是
1.7e+308
(17后跟307个零).为了说明您的值有多大,如果从
1.11224e+2121
中减去
1.7e+308
,您将得到大约…
1.11224e+2121
(相同!!!)。在现实世界中,很少有实现具有长双精度
,可以表示接近
1.11224e+2121
大小的值。这将溢出。然后所有赌注都将用于后续计算。如果使用gcc,则选项
-mlong-double-128
可能会在这种情况下有所帮助,但性能会差得多。onx86您也可以使用
-mlong-double-80
。但是您仍然需要确定所需的数字范围,因为它们仍然不是具有无穷大的类型precision@Evg是的,我已经很久以前编辑过我的注释了。每种类型的变量都表示
double,int,long…
存储数据的能力有限。您需要确定输入范围类型:<代码>未签名的长long >代码,是接受C++中最大数的STL变量。如果需要更大的,则需要使用外部<代码>大INT/Cux>类型。请检查<代码> STD::MultCimixLime::()(代码)>的值。<代码> 1.11224E+ 2121 (111224后接2116个零)看起来非常大。我相信极限大约是
1.7e+308
(17后接307个零)。为了说明你的值有多大,如果你从
1.11224e+2121
中减去
1.7e+308
,你会得到大约…
1.11224e+2121
(相同!!!)。在现实世界中,很少有实现具有长双精度,可以表示接近
1.11224e+2121
大小的值。这将溢出。然后所有赌注都将用于后续计算。如果使用gcc,则选项
-mlong-double-128
可能会在这种情况下有所帮助,但性能会差得多。onx86您也可以使用
-mlong-double-80
。但是您仍然需要确定所需的数字范围,因为它们仍然不是具有无穷大的类型precision@Evg是的,我很久以前就编辑过我的评论了