作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
这是我的打印语句:
printf("%d %f\n",kPower, raisePower);
这是我的输出:
-4 0.000100
-3 0.001000
-2 0.010000
-1 0.100000
0 1.000000
1 10.000000
2 100.000000
3 1000.000000
4 10000.000000
我希望它打印成这样:
更新
所以我把我的积极值(value)观排成一行:
-4 0.0
-3 0.0
-2 0.0
-1 0.1
0 1.0
1 10.0
2 100.0
3 1000.0
4 10000.0
到目前为止,这是我的新代码:
printf("%d %10.1f\n",kPower, raisePower);
我不知道,我是否应该制作一个 for 循环以不同的格式打印每个结果(阳性结果与阴性结果)?
最佳答案
#include <stdio.h>
char *get_number_formatted(double f)
{
static char buf[128]; // this function is not thread-safe
int i, j;
i = snprintf(buf, 128, "%20.10f", f) - 2;
for (j = i - 8; i > j; --i)
if (buf[i] != '0')
break;
buf[i + 1] = '\0';
return buf;
}
int main(void)
{
int i;
for (i = -4; i < 5; ++i)
printf("%5d %s\n", i, get_number_formatted(pow(10.0, i)));
return 0;
}
输出:
-4 0.0001
-3 0.001
-2 0.01
-1 0.1
0 1.0
1 10.0
2 100.0
3 1000.0
4 10000.0
printf()
无法打印可变长度的十进制数字,所以基本上我所做的是将格式化的数字打印到缓冲区中,然后删除超出的零。
关于c - 如何在 C 中格式化小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29912401/
我是一名优秀的程序员,十分优秀!