[英]Dots in printf in C++
我遇到了這個片段,但無法理解它是如何工作的,尤其是printf
語句。 有人能解釋一下嗎
void remove_trailing_zeroes()
{
int a,b;
bool f1,f2;
f1=a%2;
f2=b%2;
if (f1==f2) {
printf("%.0lf\n",(a*1.+b)/2.);
}
else {
printf("%.1lf\n",(a*1.+b)/2.);
}
}
編輯:我已經改寫了我的問題,幫助我改進它
如果您對這里的點感到困惑,它們是什么:
%.1lf
是精度的格式規范。 這是在printf
輸出中要求小數點后一位。1.
和2.
中(a*1.+b)/2.
意味着這些文字是double
(而不是1
是int
, 1.f
是float
)。 編寫該代碼段的人可能試圖避免在計算平均值時被截斷(假設a
和b
是int
)。聽起來好像:
printf("%g", (a+b)/2.);
仿真。
看起來它打印a
和b
之間a
平均值。
這決定了結果何時需要小數點.5
:
bool f1,f2;
f1=a%2;
f2=b%2;
if (f1==f2)
最好只寫:
// get a and b from somewhere
if ((a+b)%2) // check if sum can be divided by 2
printf("%.1lf\n",(a+b)/2.); // %.1lf will print value with 1 decimal ("xX.X")
else
printf("%.0lf\n",(a+b)/2.); // %.0lf will print value without decimals ("xX")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.