C语言格式化浮点数
Formatting float value in C language
我需要使用 C 语言中的 printf
语句将 .5
打印为 0.5
。
使用以下代码可以轻松完成。
printf("%03f", myfloatvalue);
但情况是myfloatvalue
是动态的。所以我不确定它是否是一个 3 个字符的数字,它可能是 .5
或 .56
或 .567
。在上述情况下,我需要打印为 0.5
、0.56
和 0.567
.
%g
确实打印了浮点数的最短可能表示形式。
printf("%g",myfloatvalue);
继续我对 Florian 回答的评论,"%0g"
的格式将打印带有前导零的最短表示,例如
#include <stdio.h>
int main (void) {
float f[] = { .5, .56, .567 };
size_t n = sizeof f/sizeof *f;
for (size_t i = 0; i < n; i++)
printf ("%0g\n", f[i]);
return 0;
}
例子Use/Output
$ ./bin/floatfmt
0.5
0.56
0.567
我需要使用 C 语言中的 printf
语句将 .5
打印为 0.5
。
使用以下代码可以轻松完成。
printf("%03f", myfloatvalue);
但情况是myfloatvalue
是动态的。所以我不确定它是否是一个 3 个字符的数字,它可能是 .5
或 .56
或 .567
。在上述情况下,我需要打印为 0.5
、0.56
和 0.567
.
%g
确实打印了浮点数的最短可能表示形式。
printf("%g",myfloatvalue);
继续我对 Florian 回答的评论,"%0g"
的格式将打印带有前导零的最短表示,例如
#include <stdio.h>
int main (void) {
float f[] = { .5, .56, .567 };
size_t n = sizeof f/sizeof *f;
for (size_t i = 0; i < n; i++)
printf ("%0g\n", f[i]);
return 0;
}
例子Use/Output
$ ./bin/floatfmt
0.5
0.56
0.567