tgoop.com/prog_way_blog/106
Last Update:
Проблема 0.1 + 0.2
Часто на собеседовании можно встретить такой вопрос:
Что будет выведено в консоль?0.1 + 0.2 == 0.3 // ?
Любой адекватный человек, который знает школьную математику, ответил бы, что в консоли будет выдано значение true
, но это неверный ответ. Будет false
.0.1 + 0.2 === 0.30000000000000004
Что за бред? Почему? Зачем?
У этой проблемы есть отдельное название и даже свой сайт, где вы можете посмотреть в каких языках встречается эта проблема. И суть заключается в том, что система счисления разная.
Представление нашей десятичной алгебры в компьютере задано в двоичной системе счисления, как байт код, нулями и единицами. И сложность заключается в том, что число 0.1
в двоичной системе непредставимо. Это просто невозможно записать.
Всё далеко не так просто, но если кратко, то суть проблемы заключается именно в этом. Стоит понимать, что почти все современные и не только языки программирования считают с определенным допуском по точности. То есть не максимально точно, а с определенным её порогом. Слишком высокая точность вычислений приведет к тому, что языки будут совершать математические операции дольше. Поэтому используется та точность, которая будет удовлетворять нас по производительности, но, при этом, сведёт математические ошибки к минимально возможным. Эта самая точность по умному называется репрезентативностью.
Я советовал бы почитать что-нибудь ещё на эту тему в интернете, ведь тема интересная и в глубине далеко не такая простая, как может показаться на первый взгляд. К счастью, в интернете куча информации, особенно на английском языке.
Спасибо за прочтение, это важно для меня.
#theory
BY progway — программирование, IT

Share with your friend now:
tgoop.com/prog_way_blog/106