2016-06-09 24 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,用於精度選項,

每種轉換規範由字符%引入。在%後,以下 順序出現:

  • 可選的精度,讓[...]到小數點後出現的位數 字符aAeEfF轉換,[...]精度採用週期(.)的形式,隨後或者通過一個星號 *(稍後描述)或由可選的小數整數; [...]

,並在第5段中,

如上所述,一個場寬度,或精度,或兩者,可以用星號標出。在 這種情況下,int參數提供字段寬度或精度。參數 指定字段寬度或精度,或兩者都應在 參數(如果有)被轉換之前出現(按該順序)。 [...]

所以,你可以使用格式

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

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

使用來自用戶所採取的精度n

相關問題