浮点格式直到指定的数字

时间:2014-05-26 17:59:01

标签: c floating-point printf

以下是示例编程

#include<stdio.h>
#include<math.h>
main()
{
        int x;
        scanf("%d",&x);
        printf("%.2f\n",(1/pow(2,x)));
}

这里我给.2f进行浮点格式化。我们也可以根据要求给出相应的.3f或.5f等。

假设我们不知道&#39;之前的小数点。&#39;它是打印的。我希望通过输入给出类似值n的内容,以便将小数点打印到n。

如.nf如果n = 5且x = 1,则打印0.50000,对于n = 3,应打印0.500

我如何实现这一目标?

1 个答案:

答案 0 :(得分:8)

您可以将所需的精度指定为变量:

int n = 5;
printf("%.*f\n", n, (1.0/pow(2,x)));   /* equivalent to %.5f */

引自man 3 printf

   An  optional  precision,  in the form of a period ('.')  followed by an
   optional decimal digit string.  Instead of a decimal digit  string  one
   may write "*" or "*m$" (for some decimal integer m) to specify that the
   precision is given in the next  argument,  or  in  the  m-th  argument,
   respectively,  which must be of type int.