考虑使用C编程语言的代码:
double d = 3.4;
printf("%02.2f", d);
或
double d = 3.4;
printf("%2.2f", d);
运行这些代码块时得到的输出是:
3.40
我正在尝试格式化一个表,并且需要在double或float前面保留空格,以便我的表不会画出歪斜。
获得输出的最佳方法是什么
03.40
按预期?
答案 0 :(得分:6)
double d = 3.4;
printf("%05.2f", d);
宽度字段用于整个转换后的字符串(不仅仅是整个数字部分)。
答案 1 :(得分:0)
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,或使用特定于平台的解决方案,如sprintf_s in case of Visual C++。