使用printf在C中打印浮点/双精度时指定精度

时间:2018-12-21 18:21:26

标签: c floating-point printf double format-specifiers

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

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");
}

是否可以用给定的参数printf(",%.2lf", arr[i]);替换precision中的2?

2 个答案:

答案 0 :(得分:1)

printf中实际上存在一种可能性:

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

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

答案 1 :(得分:1)

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

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