gpt4 book ai didi

c++ - 当我将代码提交给在线法官时,LDBL_MAX 和 LDBL_MIN 返回错误答案

转载 作者:行者123 更新时间:2023-11-28 01:26:51 25 4
gpt4 key购买 nike

我正在使用不支持英语的在线法官在线练习一些问题;查询:我应该在这里链接问题(不是英文的)吗?

问题很简单,我被要求输入 N,这将是我要插入的数字的数量。然后,我被要求找出哪个具有最大的值(value)和最小的值(value)。我还被要求计算这些数字的平均值和标准偏差。我也提供了标准偏差的公式。问题是,当我尝试在下面的代码中使用 LDBL_MINLDBL_MAX 时:

#include <iostream>
#include <iomanip>
#include <math.h>
#include <float.h>

using namespace std;

int main() {
int N;
cin >> N;
long double maxValue = LDBL_MIN, minValue = LDBL_MAX, sds = 0, avg = 0;

for (int i = 0; i < N; i++) {
long double temp;
cin >> temp;
if (maxValue < temp)
maxValue = temp;
if (minValue > temp)
minValue = temp;

avg += temp;
sds += temp * temp;
}

avg /= N;
sds = sqrt((sds - (N * avg * avg)) / (N - 1));
cout << fixed << setprecision(2) << minValue << " " << maxValue << " " << avg << " " << sds << endl;

return 0;
}

我得到了一个错误的答案(我在四个测试用例中得到了一个错误的答案)。所以我的一个 friend 建议我尝试使用问题给出的约束的下限 - 1 和上限 - 1 并且它返回全部正确。我将 maxValue 部分更改为:

long double maxValue = -1000001, minValue = 1000001

这里发生了什么?我认为 LDBL_MINLDBL_MAX 都会给出与我 friend 建议的替代方案相同的结果。

最佳答案

LDBL_MIN是可以表示为 long double 的最小 归一化值.所以它略大于 0。这与整数宏不同,整数宏给出可以表示的最小值。浮点类型通常是对称的,所以使用 -LDBL_MAX以获得最小的可表示值。或者,在 C++ 中,使用 std::numeric_limits<long double>::lowest() .

关于c++ - 当我将代码提交给在线法官时,LDBL_MAX 和 LDBL_MIN 返回错误答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53393501/

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