JavaScript: 0.1 + 0.1 + 0.1 === 0.3
какой результат даст сложение некоторых десятичных чисел в JavaScript
Итак, будет ли результат сравнения 0.1 + 0.1 + 0.1 === 0.3
истиной?
На первый взгляд ответ очевиден, конечно true
, так как сумма чисел с правой стороны нашего сравнения 0.1 + 0.1 +0.1
равняется 0.3
.
Но все ли так просто? Давайте подумаем, как именно десятичные числа представлены в JavaScript.
Попробуем получить результат сложения 0.1 + 0.1 + 0.1
в консоли:
console.log(0.1 + 0.1 + 0.1);
// результат сложения 0.30000000000000004
Такой результат обусловлен тем, что в JavaScript, как и в некоторых других языках программирования, существуют особенности внутреннего представления чисел с плавающей запятой.
Например 0.1
в двоичном формате становится бесконечной дробью, подобно тому как 1/3
в десятичной системе счисления превращается в 0.333(3)
Именно по этой причине сравнение 0.1 + 0.1 + 0.1 === 0.3
в JavaScript является ложью и вернет false
Спасибо за внимание