繁体   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