Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用sprintf动态设置精度_C_Printf_Format String - Fatal编程技术网

C 使用sprintf动态设置精度

C 使用sprintf动态设置精度,c,printf,format-string,C,Printf,Format String,使用sprintf和通用语法“%A.B”我可以做到: double a = 0.0000005l; char myNumber[50]; sprintf(myNumber,"%.2lf",a); 我可以在格式字符串中动态设置A和B吗?是的,您可以这样做。您需要使用星号*作为字段宽度,*作为精度。然后,您需要提供带有这些值的参数。差不多 sprintf(myNumber,"%*.*lf",A,B,a); 注意:A和B需要是类型int。从C11标准,第§7.21.6.1章,fprintf()

使用sprintf和通用语法
“%A.B”
我可以做到:

double a = 0.0000005l;
char myNumber[50];
sprintf(myNumber,"%.2lf",a);

我可以在格式字符串中动态设置A和B吗?

是的,您可以这样做。您需要使用星号
*
作为字段宽度,
*
作为精度。然后,您需要提供带有这些值的参数。差不多

  sprintf(myNumber,"%*.*lf",A,B,a);
注意:
A
B
需要是类型
int
。从
C11
标准,第§7.21.6.1章,
fprintf()
功能

。。。字段宽度或精度或两者都可以用星号表示。在里面 在这种情况下,
int
参数提供字段宽度或精度。指定字段宽度或精度或两者的参数(按顺序)应出现在要转换的参数(如果有)之前。负字段宽度参数被视为
-
标志,后跟正字段宽度。负精度参数被视为省略了精度

是-您使用“*”例如


请参见

是的,您可以,例如,也可以通过另一次调用sprintf来创建格式字符串本身。
sprintf(mynumber, "%.*lf", 2, a);