[英]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.