Это нормальное поведение для вычислений с плавающей точкой.
Существует только ограниченное число значений, которые могут быть представлены точно в бинарном формате с плавающей запятой, поэтому большинство значений представлены как максимально возможное значение.
Значение, подобное 7.99
, может быть представлено как что-то вроде 7.98999999999997754
, так что это значение, которое вы действительно получаете при анализе кода.
Разница между фактическим значением и ожидаемым значением настолько мала, что не отображается, когда вы просто отображаете значение напрямую, так как значение округляется, когда оно возвращается в строковый формат. Когда вы выполняете несколько расчетов, небольшие различия складываются, и рано или поздно вы увидите это.
В результате вы получите -0.0000000000000017763568394002505
, так что это очень близко к нулю, но это не совсем так.
вы можете прочитать об этом здесь http://stackoverflow.com/questions/1458633/elegant-workaround-for-javascript-floating-point-number- проблема –