簡體   English   中英

什么是“。” 意味着輸出?

[英]What does a '.' means in output?

因此,我正在解決一個基本上具有以下代碼的問題:

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; int a=4; float c; 如果我們寫c=a/3; 然后printf("%f",c); 如果您寫printf("%.10f",c);將給出1.000000 (精確到小數點后六位printf("%.10f",c); 那么它將給出1.0000000000 (精確到小數點后十位),即表示. printf中的有效數字將精確地寫在之后的數字上. 而且,如果我們編寫c=a/3.0這意味着我們告訴編譯器將int by float並在此處進行隱式轉換(或類型提升),然后Complier將int a as float並給出輸出1.333333 這樣我們就可以達到精確的答案,直到要求的有效位數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM