Я написал программу JavaScript, которая вычисляет глубину двоичного дерева на основе количества элементов. Моя программа работает отлично в течение нескольких месяцев, но в последнее время я обнаружил разницу, когда веб-страницу просматривается в Chrome vs Firefox.
В частности, в Firefox:
Math.log2(8) = 3
но теперь в Chrome:
Math.log2(8) = 2.9999999999999996
Моя программа JavaScript была первоначально написана, чтобы найти глубину двоичного дерева, основанную на числе элементов, как:
var tree_depth = Math.floor(Math.log2(n_elements)) + 1;
Я сделал простую модификацию этой формулы, чтобы она по-прежнему работала корректно в Chrome:
var epsilon = 1.e-5;
var tree_depth = Math.floor(Math.log2(n_elements) + epsilon) + 1;
У меня есть 2 вопроса:
-
Кто-нибудь еще заметил изменения в Chrome недавно для
Math.log2
? -
Есть ли более элегантная модификация, чем та, которую я сделал выше, добавив epsilon?