2016-06-09 3 views
2

Я хочу напечатать n количество цифр после десятичного числа при печати нескольких типов данных double. Однако целое число n должно быть получено от пользователя с использованием scanf().Как управлять количеством цифр, которые будут отображаться после символа десятичной точки для двойной переменной?

double pi = acos(-1); 
int n; 
printf("\nEnter the number of decimal digits required : "); 
scanf("%d",&n); 

Теперь, как использовать printf() для печати n количества десятичных цифр пи?

+0

Создать строку формата через 'sprintf()'? – MikeCAT

ответ

5

Цитирование C11, глава §7.21.6.1/p4, для точности вариант,

Каждая спецификация преобразования вводится символ %. После %, следующий появляется в следующей последовательности:

  • Опциональная точность, что дает [...] число цифр после десятичной точки символа для a, A, e, E, f , и F конверсии, [...] Точность принимает форму периода (.), за которым следует либо звездочка * (описанная ниже), либо необязательное десятичное целое; [...]

и в пункте 5,

Как было отмечено выше, ширину поля, или точность, или оба, могут быть обозначены звездочкой. В этот аргумент int указывает ширину поля или точность. Аргументы , указывающие ширину поля, или точность, или и то и другое, должны отображаться (в этом порядке) до аргумента (если таковые имеются) для преобразования. [...]

Таким образом, вы можете использовать формат

printf("%.*f", precision, variable); 

как

printf("%.*f", n, pi); 

использовать точность n взятую из пользователя.