我想在" .5"中打印0.5值ANSI C中的表格? 我搜索了网络和stackoverflow,但我找不到我想要的东西。 我试过了两个"%。1f"和"%0.1f"。但是他们中有人工作了。
答案 0 :(得分:2)
C
中没有此类规范可以在开头打印没有0
的小数。顺便说一下,您可以将此代码用于您的案例:
printf(".%d", (int)(0.5*10));
答案 1 :(得分:1)
尝试此解决方法:
double f = 0.5;
printf(".%u\n" , (unsigned)((f + 0.05) * 10));
答案 2 :(得分:1)
接受回答后
代码是否需要避免使用大浮点值,INF,NaN或边缘条件(例如
)的麻烦printf(".%d", (int)(0.46*10)); // prints "0.4"
对字符串进行后处理。
void PrintdNoLead0(double x) {
const char *format = "%.1f\n";
if (fabs(x) < 1.0) {
char buf[10]; // Some buffer large enough for x in range -1<x<1
sprintf(buf, format, x);
char *p = strchr(&buf[1], '.');
if (p[-1] == '0') {
memmove(&p[-1], p, strlen(p));
}
fputs(buf, stdout);
} else {
printf(format, x);
}
}