gpt4 book ai didi

c++ - '.' 在输出中意味着什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:03:19 27 4
gpt4 key购买 nike

所以,我正在解决一个基本上具有以下代码的问题:

int rez,arr[10000],n,l,diff;
float f;
int main (void)
{
cin>>n>>l;
for (int i = 0; i < n; i++ )
{
cin>>arr[i];
}
sort(arr,arr+n);
rez = 2*max(arr[0],l-arr[n-1]);
for ( int i = 0; i < n-1; i++ )
{
rez = max(rez, arr[i+1]-arr[i]);
}
f = rez/2.0;
printf("%.10f\n",f);
return 0;
}

上面是下面问题的代码:

http://codeforces.com/problemset/problem/492/B

逻辑:按非降序对灯笼进行排序。然后我们需要找到两个相邻灯笼之间的最大距离,让它成为 maxdist。我们还需要考虑街道边界并计算从外面的灯笼到街道边界的距离,它将是 (a[0] - 0) 和 (l - a[n -⟉1])。答案将是 max(maxdist/2, max(a[0] - 0, l - a[n - 1]))

现在,上面的代码给出了一个 WA(错误答案),但是将最后一个语句修改为,

printf("%.10f\n",rez/2.);(并删除 f),我被接受了。这个 . 是什么意思,为什么当我使用额外的变量 f 时它会给出 WA?

最佳答案

.的含义如下-

让我们举个例子 int a=4; float c; 如果我们写c=a/3;那么printf("%f",c);会得到1.000000(精确到小数点后六位),如果你写printf("%.10f",c); 那么它会给出1.0000000000(精确到小数点后十位),这意味着在 printf 中写入 . 将给出精确到 之后写入的数字的有效数字。 如果我们写入 c=a/3.0 这意味着我们告诉编译器将 int 除以 float 并在此处进行隐式转换(或类型提升),编译器将 int a 视为 float 并给出输出 1.333333。因此,我们可以通过这样做获得精确的答案,直到所需的有效数字。

关于c++ - '.' 在输出中意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30547390/

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