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