JavaScript: сложение чисел с плавающей запятой
объясняем особенности сложения чисел с плавающей запятой в JavaScript
Какой результат будет получен, если вывести в консоль результаты сравнения операций сложений некоторых нецелых чисел с ожидаемым результатом, например, 0.1 + 0.2 === 0.3?
Разберем следующие примеры:
console.log(0.1 + 0.2 === 0.3)
console.log(0.1 + 0.7 === 0.8)
console.log(0.1 + 0.2 - 0.2 === 0.1)
console.log(0.1 + 0.4 === 0.5)
Результат:
false
false
false
true
Следует знать, что JavaScript использует не десятичную, а двоичную систему счисления. Для человека число 0.1 в привычной десятичной системе счисления выглядит именно как 0.1. В двоичной системе счисления, это число имеет бесконечную двоичную дробную часть и выглядит как 0.000110011001100110011….
JavaScript складывает двоичные представления чисел, а затем конвертирует результат обратно в десятичную систему счисления.
К примеру, представления чисел 0.1 и 0.2 в двоичной системе не точны, поэтому результат их сложения будет равен приблизительно 0.30000000000000004.
0.1 + 0.2 равно 0.30000000000000004
0.1 + 0.7 равно 0.7999999999999999
0.1 + 0.2 - 0.2 равно 0.10000000000000003
Спасибо за внимание.
