首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'.‘是什么?意味着输出?

'.‘是什么?意味着输出?
EN

Stack Overflow用户
提问于 2015-05-30 22:35:09
回答 1查看 205关注 0票数 1

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

代码语言:javascript
复制
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)和(l - an - 1)。答案将是max(maxdist / 2, max(a - 0, l - an - 1))

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

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

EN

回答 1

Stack Overflow用户

发布于 2015-05-31 00:36:02

.在这两个语句中的含义如下-

让我们举个例子,如果我们写c=a/3;,那么printf("%f",c);会给出1.000000(精确到六位小数),如果你写printf("%.10f",c);,那么它会给出1.0000000000(精确到十位小数),这意味着在printf中写.会给出在.之后写的数字的有效位,如果我们写c=a/3.0,这意味着我们告诉编译器划分<代码>D10,这里隐含转换(或类型提升)发生,编译器处理<代码>D11,输出<代码>D12。因此,我们可以达到精确的答案,直到所需的有效数字。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30547390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档