2016-08-24 122 views
-2

当代码是:PHP:为什么printf(“%。2f”,0.02)输出0.024?为什么不是0.02?

<?php printf("%.2f", 0.02);?> 

输出:0.02

当代码是:

<?php var_dump(printf("%.2f", 0.02));?> 

输出:0.02int(4)

当代码是:

<?=printf("%.2f", 0.02)?> 

输出:0.024

<?=var_dump(printf("%.2f", 0.02))?> 

输出:0.02int(4)

为什么<?=printf("%.2f", 0.02)?>不outputing 0.02<?=printf("%.2f", 0.02)?>是否对应<?php var_dump(printf("%.2f", 0.02));?>

+1

你是什么意思'0.02int(4)'?请清楚重现问题的代码,因为AFAIK,PHP不会奇迹般地产生一个4 – Li357

+0

您可能想要将所有4行放入一个文件中,并使用类似于'

---- ----------

'表明4不是来自其他一些输入 –

+0

它前面很难理解,问题的格式是遍布各处的,OP可能不是' t知道如何在降价编辑器中编码格式 – Ghost

回答

3

我想你已经错过了重要的东西在这里。 From the manual

返回输出字符串的长度。

所以,虽然printf输出到浏览器,它返回长度0.02,这是4

+0

但为什么<?= printf(“%。2f”,0.02)?>输出0.024,<?php printf(“%。2f”,0.02);?>输出0.02? – Chess

+0

因为在第一个中你回显了'printf'的** return **值,而在第二个中你不是 – Machavity