簡體   English   中英

C++中printf中的點

[英]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 (而不是1int1.ffloat )。 編寫該代碼段的人可能試圖避免在計算平均值時被截斷(假設abint )。

聽起來好像:

printf("%g", (a+b)/2.);

仿真。

看起來它打印ab之間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.

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