我想以一致的列宽打印双精度数。这些数字代表美元价值,所以我也希望小数点后的数字不超过两位。
在这里,我打算使用过去一直对我有用的有效数字说明符(
%1.2f
),以及设置为左对齐的列宽说明符(%-10f
)。这里唯一的问题是我不知道如何以一种方式组合它们,使数字在第 10 位之后被截断,并与十个字符列的左侧对齐。
void displayBooks(float *balances, float *interests, int size) {
printf("balance interest\n");
for (int i=0; i<size; ++i) {
printf("%1.2-10f", balances[i]);
printf("%1.2-10f", interests[i]);
}
}
这根本不被识别为格式说明符。它只是按字面意思打印
%1.2-10f
。我如何修改我的代码以实现所需的行为?
您可能想使用
"%-10.2f"
而不是无效的格式字符串:
#include <stdio.h>
void displayBooks(float *balances, float *interests, int size) {
printf("balance interest\n");
for (int i=0; i<size; ++i) {
printf("%-10.2f", balances[i]);
printf("%-10.2f", interests[i]);
}
printf("\n");
}
int main() {
displayBooks((float []) {123.123}, (float []) {234.234}, 1);
}
和示例运行:
balance interest
123.12 234.23