如何组合有效数字、列宽和对齐说明符?

问题描述 投票:0回答:1

我想以一致的列宽打印双精度数。这些数字代表美元价值,所以我也希望小数点后的数字不超过两位。

在这里,我打算使用过去一直对我有用的有效数字说明符(

%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
。我如何修改我的代码以实现所需的行为?

c floating-point printf format-specifiers
1个回答
0
投票

您可能想使用

"%-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    
© www.soinside.com 2019 - 2024. All rights reserved.