带有 %f 的 C printf,其小数位基于 %d?

C printf with %f whose decimal places is based on %d?

我可以用 printf("Value: %0.4f\n", value) 打印到小数点后四位;但是,有没有办法让小数位数成为用 %d 插入的值?例如,类似于:

double x = 3.434244;
int decimalPlaces  = 4;
printf("Value: %0.%df\n", x, decimalPlaces);

您可以用 * 代替字段宽度或精度,在这种情况下,需要 int 来填充值。

printf("Value: %0.*f\n", decimalPlaces, x);

@dbush 的回答是要走的路。但是为了完整起见,您还可以格式化格式化字符串:

sprintf(fmt, "Value: %%.%df\n", decimalPlaces);
printf(fmt, x);

注意 printf() 中的双 %% 转义 %