使用 sprintf 和一般语法"%A.B"
我可以做到这一点:
double a = 0.0000005l;
char myNumber[50];
sprintf(myNumber,"%.2lf",a);
我可以在格式字符串中动态设置 A 和 B 吗?
使用 sprintf 和一般语法"%A.B"
我可以做到这一点:
double a = 0.0000005l;
char myNumber[50];
sprintf(myNumber,"%.2lf",a);
我可以在格式字符串中动态设置 A 和 B 吗?
是的,你可以这么做。您需要使用星号*
作为字段宽度和.*
精度。然后,您需要提供带有值的参数。就像是
sprintf(myNumber,"%*.*lf",A,B,a);
注意:A
并且B
需要是 type int
。从C11
标准,第 §7.21.6.1 章,fprintf()
功能
...字段宽度或精度或两者都可以用星号表示。在这种情况下,
int
参数提供字段宽度或精度。指定字段宽度或精度或两者的参数应(按该顺序)出现在要转换的参数(如果有)之前。负字段宽度参数被视为-
标志,后跟正字段宽度。采用负精度参数,就好像省略了精度一样。