使用 printf 在 C 中打印 float/double 时指定精度

Specifying the precision when printing a float/double in C using printf

我想创建一个函数,使用指定的浮点精度作为函数的参数来打印我的双精度数组。 假设我有以下代码:

void printDoubleArrayPrecision(int length, double *arr, int precision) {
    printf("[");
    if (length > 0) {
        printf("%.2lf", arr[0]);
        for (int i = 1; i < length; i++) {
            printf(",%.2lf", arr[i]);
        }
    }
    printf("]\n");
}

有没有办法用给定的参数 precision 替换 printf(",%.2lf", arr[i]); 中的 2?

其实有一种可能在printf:

printf("%.*lf", precision, arr[i]);

将以给定的精度打印 arr[i]

显然我应该通过寻找可变长度而不是双精度的打印字符串来寻找我的解决方案。 我的问题的解决方案是:

printf(",%.*lf", precision, arr[i]);