使用sprintf动态设置精度

时间:2015-06-23 09:06:55

标签: c printf format-string

使用sprintf和一般语法"%A.B"我可以这样做:

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

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

2 个答案:

答案 0 :(得分:9)

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

这样的东西
  sprintf(myNumber,"%*.*lf",A,B,a);

注意:AB需要输入int。从C11标准,章节§7.21.6.1, fprintf() 函数

  

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

答案 1 :(得分:4)

是 - 您使用“*”,例如

PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH:$EA_HOME/omnicat/src/main/python:$SPARK_HOME/python/

请参阅http://linux.die.net/man/3/sprintf