gpt4 book ai didi

C++ cout 在两个大十进制数(long double)之间的运算后打印 "inf "

转载 作者:行者123 更新时间:2023-11-28 05:24:10 25 4
gpt4 key购买 nike

我的程序将长 double vector 作为输入 ( vector<long double> ) 并使用某些方法计算不同的解决方案。

一切正常,直到我尝试这两个数字:1.18973e+4932 和 1.18973e+4932。

输出如下:

<2: 1.18973e+4932 1.18973e+4932 >

Min: 1.18973e+4932
Max: 1.18973e+4932
Range: 0
Midrange: inf
Median: inf
Mean: inf
Variance: inf
StdVariance : inf

经过一番研究,我发现该值超出了其自身类型可用的内存空间。

所以问题是:是否可以在我的代码中处理这个问题?或者唯一的解决办法是输入较小的数字?

最佳答案

缩放可能有帮助,具体取决于编译器选择对您的代码执行的操作:

$ cat s.cpp
#include <iostream>

int main()
{
long double v = 1.18973e+4932L;

std::cout << "Midrange: " << (v + v) / 2 << '\n';
std::cout << "Midrange again: " << (v/2 + v/2) << '\n';
return 0;
}

$ g++ s.cpp -Wall -O2 -o s

$ ./s
Midrange: inf
Midrange again: 1.18973e+4932

当样本 minmax 相等时,您也可以避免计算任何东西,只需设置 meanmidrange中位数 等于任一值,范围方差标准差0.0 不再乱搞。

关于C++ cout 在两个大十进制数(long double)之间的运算后打印 "inf ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40893127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com