我编写了一个JavaScript程序,它根据元素的数量计算二叉树的深度.我的程序已经运行好几个月,但最近我发现在Chrome与Firefox中查看网页时有所不同.
特别是在Firefox上:
Math.log2(8) = 3
Run Code Online (Sandbox Code Playgroud)
但现在在Chrome中:
Math.log2(8) = 2.9999999999999996
Run Code Online (Sandbox Code Playgroud)
我的JavaScript程序最初是为了根据元素数量找到二叉树的深度而编写的:
var tree_depth = Math.floor(Math.log2(n_elements)) + 1;
Run Code Online (Sandbox Code Playgroud)
我对此公式进行了简单修改,以便它仍可在Chrome上正常运行:
var epsilon = 1.e-5;
var tree_depth = Math.floor(Math.log2(n_elements) + epsilon) + 1;
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
有没有人注意到最近Chrome的精确度发生了变化Math.log2?
是否有比我上面添加的epsilon更优雅的修改?