Вы можете напечатать спецификатор формата в виде строки, заполнив соответствующее количество цифр, если вы можете определить, сколько:
sprintf(fmt, "%%.%dlf", digits);
printf(fmt, number);
или просто проверить конечные 0 символов:
sprintf(fmt, "%.15lf", 2.123);
truncate(fmt);
printf("%s", fmt);
truncate(char * fmt) {
int i = strlen(fmt);
while (fmt[--i] == '0' && i != 0);
fmt[i+1] = '\0';
}