C 使用sprintf动态设置精度
使用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()
“%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);