float参数和-ve数在php中的printf函数中做了什么

时间:2013-02-23 20:00:53

标签: php numbers printf

我正在运行这两个printf()函数,并且与它们生成的输出有点混淆。

  1. printf("%0.4f",3467);
  2. 输出 - 3467.0000。在第一个参数0.4f 4被理解为它在小数点后代表4个零但我不确定0因为我将其更改为1,2,3它保持不变。那它做了什么?

    1. printf("%1.6u\n", -32);
    2. 在运行此操作时,我得到4294967264这个数字究竟是指什么?

      在询问我之前检查printf()链接时,指的是sprintf()参数查找,但无法找到相关信息。

1 个答案:

答案 0 :(得分:2)

%in 0.4f是格式化值时输出的最小长度。在你的情况下你不会看到输出的任何差异,除非你把它改为10或更高,因为像那样的输出总是3467.0000。如果将0更改为15,则格式化输出前面会出现一个空白:

printf("%15.4f", 3467);
      3467.0000
|        |    |
1       10    5

在您的浏览器中,您将看不到额外的空白,但如果您另外告诉它使用点作为填充字符,您将看到它:

printf("%'.15.4f", 3467);
......3467.0000
|        |    |
1       10    5

至于你的第二个问题。您正在将带符号的值格式化为无符号输出。 -32作为无符号32位整数是FFFFFFE0。如果告诉printf输出为无符号,则会得到无符号值FFFFFFE0,即4294967264。