dr.Brain

doctor Brain

мир глазами веб-разработчика

JavaScript: сложение чисел с плавающей запятой

объясняем особенности сложения чисел с плавающей запятой в JavaScript

dr.Brain

время чтения 1 мин.

Photo by NEOM on Unsplash

Какой результат будет получен, если вывести в консоль результаты сравнения операций сложений некоторых нецелых чисел с ожидаемым результатом, например, 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

Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.