c - 打印在两边最多 float 四个位置

标签 c floating-point printf

我是新手,我正在尝试打印一个 float 值,每边最多四位。例如 11.3 将是 0011.3000。为此,我使用以下行:-

float t = 11.3;
printf("%4.4f", t);

但我得到的是 11.3000。那么,我想做的事情甚至有可能吗?如果是那么如何?谢谢

最佳答案

您的代码片段中 f 的类型不正确,它应该是 floatdouble

要生成前导零,请使用 0 printf 修饰符并指定预期的最小宽度,在您的示例中为 9 个字符( 之前的 4 个位置。 加上 . 加上 . 之后的 4 个位置。

因此格式为 %09.4f

代码如下:

#include <stdio.h>

int main() {
    double t = 11.3;
    printf("%09.4f\n", t);
    return 0;
}

输出:

0001.3000

但请注意,如果数字为负数,您只会在 之前获得 3 个位置。 如果数字的绝对值太大 (<= -999.99995或 >= 9999.99995), 输出将超过 9 个字符。如果你想在 之前有 4 个位置。 也用于负值,你应该使用 % 010.4f:如果是正数,则数字将以空格为前缀,并且 - 如果为负数:

#include <stdio.h>

int main() {
    double t = 11.3;
    printf("%09.4f\n", t);
    printf("% 010.4f\n", t);
    printf("% 010.4f\n", -t);
    return 0;
}

输出:

0011.3000
 0011.3000
-0011.3000

关于c - 打印在两边最多 float 四个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492065/

相关文章:

c++ - 证明两点法有效(对和)

floating-point - 为什么 double 会像他们那样工作

c++ - 浮点运算的最佳实践

python - 将列表列表转换为 float ,同时忽略字符串列

c - fprintf 语句中的\b 转义序列有问题..?

c - 当 kv 超过 1 项时,kv 执行无限循环

c++ - 反转链表(通过递归)不起作用

c++ - Printf和Scanf C++实现

尝试访问 const char* 缓冲区时崩溃

c - Re Legacy 代码 : format ‘%d’ expects argument of type ‘int’ , 但参数 3 的类型为 ‘long unsigned int’ [-Wformat]