По какой причине JS результатом к выражению 1.4 + 0.2 возвращает 1.5999999999999999?
Это называется неточные вычисления. Всё дело в том, что в стандарте IEEE 754 на число выделяется ровно 8 байт(=64 бита), не больше и не меньше. Например число 0.1 (одна десятая) записывается легко в десятичном формате. Но в двоичной системе счисления это бесконечная дробь, так как единица на десять в двоичной системе так просто не делится. Вообщем складываются неточности, надо округлять.
По причине того, что запись чисел 1.4 и 0.2 в двоичной системе бесконечна, соответственно любое их конечное представление на компьютере стандартным вещественным типом будет содержать ошибку.
1.410 = 1.(0110)2
0.210 = 0.(0011)2
1.(0110)2+0.(0011)2 = 1.(1001)2
Это зависит не от языка программирования, а только от конкретного представления чисел.