PHP Printf As Float 精度
PHP Printf As Float Precision
我正在尝试使用 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
什么?!在给它一个整数以转换为浮点数时,它将 10 转换为 10.00000009.
如何补救?显然,一种解决方案是将其作为整数打印出来,但该值并不总是整数;它可能是 5.57 GB,在这种情况下,此脚本的准确性非常重要。
嗯……
echo printf("%d", 10)
结果
102
这里出了点问题。
所以显然 printf
不应该被回应。完全没有。
只需将 printf
的实例更改为 sprintf
即可解决该问题。
此外,去掉回显,只运行命令printf("%.02f", 10)
,实际上打印10.00
,但是需要注意的是,不能追加字符串到printf 就像你可以回显一样。
如果你问我,PHP 应该会抛出一个语法错误,意想不到的 T_FUNCTION 之类的,但我离题了。
这太深了,但我会尽力解释:
echo printf("%d", 10)
TL>TR:当用表达式调用echo
时,它首先计算所有参数,然后在屏幕上显示结果。
如果某些表达式在求值时在屏幕上打印出一些东西,你就会变得一团糟。
首先发生的事情是 printf()
它被执行,以获取它的值。
这导致立即在 screen/output.
上打印“10”
然后,回显 printf()
的 return 结果,在本例中为“2”。
如果检查结果字符串的 docs printf
returns length。
所以在屏幕上您会看到“10”,“2”
您真的不应该将 Print() 和类似函数与 Echo.
一起使用
P.S
这是另一个 gem:
echo 1. print(2) + 3;
// 结果:214
我正在尝试使用 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
什么?!在给它一个整数以转换为浮点数时,它将 10 转换为 10.00000009.
如何补救?显然,一种解决方案是将其作为整数打印出来,但该值并不总是整数;它可能是 5.57 GB,在这种情况下,此脚本的准确性非常重要。
嗯……
echo printf("%d", 10)
结果
102
这里出了点问题。
所以显然 printf
不应该被回应。完全没有。
只需将 printf
的实例更改为 sprintf
即可解决该问题。
此外,去掉回显,只运行命令printf("%.02f", 10)
,实际上打印10.00
,但是需要注意的是,不能追加字符串到printf 就像你可以回显一样。
如果你问我,PHP 应该会抛出一个语法错误,意想不到的 T_FUNCTION 之类的,但我离题了。
这太深了,但我会尽力解释:
echo printf("%d", 10)
TL>TR:当用表达式调用echo
时,它首先计算所有参数,然后在屏幕上显示结果。
如果某些表达式在求值时在屏幕上打印出一些东西,你就会变得一团糟。
首先发生的事情是 printf()
它被执行,以获取它的值。
这导致立即在 screen/output.
然后,回显 printf()
的 return 结果,在本例中为“2”。
如果检查结果字符串的 docs printf
returns length。
所以在屏幕上您会看到“10”,“2”
您真的不应该将 Print() 和类似函数与 Echo.
一起使用P.S
这是另一个 gem:
echo 1. print(2) + 3;
// 结果:214