如何在 C 中使用 printf() 格式化在双精度数前面保留空格

How to reserve spaces in front of a double using printf() formatting in C

考虑 C 编程语言中的代码:

double d = 3.4;
printf("%02.2f", d);

double d = 3.4;
printf("%2.2f", d);

当 运行 这些代码块时得到的输出是:

3.40

我正在尝试格式化 table 并且需要在双精度或浮点数前面保留空格,这样我的 table 就不会画歪了。

获取输出的最佳方式是什么

03.40

如预期?

double d = 3.4;
printf("%05.2f", d);

宽度字段用于整个转换后的字符串(不仅仅是整数部分)。

03.40 似乎不是一个好的解决方案。您应该添加前导或尾随空格,而不是零。

最好的选择是使用 snprintf:

const size_t buffer_size = 16;

double value = 3.40;
char buffer[buffer_size];
int result = snprintf(buffer, buffer_size, "%.2f", value);

if(result > 0 && result < buffer_size)
    printf("Length of string: %d (%s)\n", result, buffer);

输出:

Length of string: 4 (3.40)

在此处尝试此代码:link

哦,还有一件事:snprintf 是 C++ 11 的一项功能。如果您无法访问符合 C++11 的编译器,请使用安全性较低的版本,sprintf, or use platform-specific solution like sprintf_s in case of Visual C++.