【问题标题】:How do I pad a printf to take account of negative signs and variable length numbers?如何填充 printf 以考虑负号和可变长度数字?
【发布时间】:2011-03-16 12:20:20
【问题描述】:

我正在尝试在日志文件中输出一些数字,并且我想通过 printf 函数填充大量浮点数以生成:

 058.0
 020.0
 038.0
-050.0
 800.0
 150.0
 100.0

目前我正在这样做:

printf("% 03.1f\n", myVar);

...其中 myVar 是一个浮点数。该语句的输出如下所示:

58.0
20.0
38.0
-50.0
800.0
150.0
100.0

来自what I've read,我希望我的代码能够产生我在这篇文章顶部提到的输出,但显然有问题。一次只能使用一个标志吗? ..还是这里发生了其他事情?

【问题讨论】:

  • 如果这真的是一个 C++ 问题,您可能应该为 I/O 使用适当的 C++ 流。

标签: c formatting floating-point printf


【解决方案1】:

宽度说明符是完整的宽度:

printf("%05.1f\n", myVar);  // Total width 5, pad with 0, one digit after .

要获得您期望的格式:

printf("% 06.1f\n", myVar);

【讨论】:

  • 是的,就是这样。我没有意识到填充包括小数点等......虽然它需要是 06 才能包含空格或符号值。
【解决方案2】:

跟随埃里克, 但我发现

printf("% 6.1f\n", myVar);

也可以。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    • 2013-05-26
    • 2011-05-07
    相关资源
    最近更新 更多