我的问题如下:
log(1000,10)
会返回3
,但floor(log(1000,10))
会返回2
。如何解决这个问题?
我的phpversion是5.6.30-0 + deb8u1。
答案 0 :(得分:6)
因为log(1000)
类似于2.9999999999999996而floor()函数将数字向下舍入到最接近的整数
如果你想拥有3,请使用round而不是floor
答案 1 :(得分:2)
From a 13 year old comment at the PHP:log documentation:
$val = 1000000
$val2 = floor(log($val,10)) // gives a value of 5 for $val2 and not 6 as expected.
$val2 = floor(log10($val)) // gives the correct value.
所以你应该使用floor(log10(1000);
虽然我当然不是专家,但我认为PHP5和PHP7中的不同结果(正如您对问题的评论中所指出的)与{7}}有关,这是PHP 7中的一项新功能(尝试播放)用严格模式找出更多,例如scalar type declaration)。
答案 2 :(得分:-1)
它可能与浮动精度有关。您可以改用log10(1000)。