我正在尝试使用PHP的printf
功能打印出用户的存储容量。完整的公式看起来像这样:
echo printf("%.02f", ($size/(1024*1024))) . " GB";
鉴于$size == (10 * 1024 * 1024)
,这应该打印出来
10.00 GB
但它没有。它打印10.04 GB
。此外,
echo printf("%.02f", 10)
结果
10.04
什么?在给它一个转换为float的整数时,它将10转换为10.00000009。
如何解决这个问题?显然,一种解决方案是将其作为整数打印出来,但该值并不总是整数;它可能是5.57 GB,在这种情况下,此脚本的准确性非常重要。
嗯......
echo printf("%d", 10)
结果
102
这里出了点问题。
答案 0 :(得分:0)
显然printf
并不意味着回应。完全没有。
只需将printf
的实例更改为sprintf
即可修复该问题。
此外,删除回显,只是以printf("%.02f", 10)
运行命令,实际上是打印10.00
,但是,应该注意的是,您不能像回显一样将字符串附加到printf
如果你问我,PHP应该抛出一个语法错误,意外的T_FUNCTION或其他什么,但我离题了。
答案 1 :(得分:0)
这是深入的,但我会尝试解释:
echo printf("%d", 10)
当使用表达式调用echo
时,它首先评估所有参数,然后在屏幕上显示它们。
调用echo printf()
函数时...执行它,以获取其值。
因此,这会导致IMIDIATLY打印“10”,并将函数的结果值串起来echo
- 编辑。
返回printf(“%d”,10)实际为2,如果您检查docs它会返回结果字符串的长度。
所以在屏幕上你会看到“10”,“2”
你真的不应该将 Print()和类似功能与 Echo 一起使用。
P.S
这是另一个宝石:
echo 1. print(2) + 3;
//结果:214