我找到了有趣的格式来打印非终止的固定长度字符串,如下所示:
char newstr[40] = {0};
sprintf(newstr,"%.*s", sizeof(mystr), mystr);
Run Code Online (Sandbox Code Playgroud)
所以我想也许在printf命令下有一种打印浮点数的方法......
"%8.2f"
能够选择整数的小数位数.
像这样的东西:
sprintf(mystr, "%d %f", numberofdecimals, floatnumbervalue)
Run Code Online (Sandbox Code Playgroud)
编辑 - 解决方案:(
用于将浮点数舍入和清除到所需精度).
int precision = 2;
char kolf[16] = {0};
sprintf(kolf, "%8.*f", precision, mystruct.myfloat);
float kol = atof(kolf);
Run Code Online (Sandbox Code Playgroud)
And*_*ter 40
您也可以使用".*"
浮点,另请参阅http://www.cplusplus.com/reference/cstdio/printf/(指C++,但格式说明符类似)
.number:对于a,A,e,E,f和F说明符:这是小数点后要打印的位数(默认情况下,这是6).
...
.*:格式字符串中未指定精度,但作为必须格式化的参数前面的附加整数值参数.
例如:
float floatnumbervalue = 42.3456;
int numberofdecimals = 2;
printf("%.*f", numberofdecimals, floatnumbervalue);
Run Code Online (Sandbox Code Playgroud)
输出:
42.35
Run Code Online (Sandbox Code Playgroud)
Som*_*ude 22
对于字段宽度和精度,您也可以使用星号:
printf("%*.*f\n", myFieldWidth, myPrecision, myFloatValue);
Run Code Online (Sandbox Code Playgroud)
参见例如此参考文献.
归档时间: |
|
查看次数: |
29269 次 |
最近记录: |