如何在 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++.
考虑 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++.