如何在C中的printf中编写.5?

时间:2014-10-20 18:31:33

标签: c formatting printf

我想在" .5"中打印0.5值ANSI C中的表格? 我搜索了网络和stackoverflow,但我找不到我想要的东西。 我试过了两个"%。1f"和"%0.1f"。但是他们中有人工作了。

3 个答案:

答案 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);
  }
}