我很困惑为什么:
echo log10(238328) / log10(62);
Run Code Online (Sandbox Code Playgroud)
结果3
但
echo floor(log10(238328) / log10(62));
Run Code Online (Sandbox Code Playgroud)
结果2
我知道地板向下,但我认为它只适用于十进制数字.
如何在通常四舍五入的同时得到后一种判断中的3种答案?
Phi*_*oss 10
PHP使用双精度浮点数.两个对数的结果都不能精确表示,因此除以它们的结果并不精确.你得到的结果接近,但略小于3.格式化时,它会四舍五入为3 echo.floor但是返回2.
你可以通过利用log(x, b) / log(y, b)相当于log(x, y)(对于任何基数b)的事实来避免不精确的划分.这为您提供了表达式log(238328, 62),它的浮点结果正好为3(自238328以来的正确结果pow(62, 3)).