В общем, начал листать книжку C# 7 и .NET Core Кросс-платформенная разработка для профессионалов и наткнулся на это:
Хорошо, что в оборонке JavaScript не используется.
Подробнее
Никогда не сравнивайте числа двойной точности с плавающей запятой с помощью оператора ==. Во время войны в Персидском заливе американский противоракетный комплекс Patriot был запрограммирован с использованием чисел двойной точности с плавающей запятой в вычислениях. Неточность в расчетах привела к тому, что комплекс не смог перехватить иракскую ракету Р-17 и она попала в американские казармы в городе Дхарам, в результате чего погибли 28 американских солдат. Подробнее см. на сайте https://www.ima.umn.edu/^arnold/disasters/patriot.html.
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор
Еще на тему
Но это не точно. Сейчас пойду за пруфами.
багогенератоныйгибкий и нетепизированный языкнпм инстал +2гб и гогого в продакшин
Потому что автор идиот и пизданул как в лужу перднул. Во всех актуальных языках, внезапно, по-умолчанию используется один стандарт чисел с плавающей точкой, а именно IEEE 754.
Иронично, но на большинстве языков будут одинаковые ошибки зависимо от стандарта. К примеру для JS характерны все ошибки, которые характерны для других динамических языков.
bool equal( float a, float b, float epsilon )
Собственно это и хотел сказать автор книги.
В калькуляторе виндоус производятся вычисления sqr(х^2)-x, где х - любое положительное число.
Если что sqr - извлечение квадратного корня.
И я попробовал как ты сказал в виндовс калькуляторе.
Это делается чтобы не пугать бухгалтерш всякими 1.3425345e-10
Странно, у меня по-другому получилось:
Sqr у меня просто как сокращение от square, без привязки к лексике какого-либо языка. Буду знать, что это вызывает вопросы.
Вроде здесь описано https://csharpindepth.com/articles/FloatingPoint
Хотя вполне вероятно, что я сморозил хуйню.
Таки вроде в бэйсике sqr - корень.
Помогите позязя.