Егор пытается сказать, что компьютеры не рассчитывают точные ответы большую часть времени.
Texas Instruments в основном занимается микроконтроллерами, поэтому я не ожидал бы, что обычный процессор x86-64 внутри вашего устройства. Это означает, что TI может делать многое по-своему. Они могут принимать собственные решения о том, как обрабатывать небольшие значения, округлять, как обрабатывать сложные математические операции и т. Д. *
В наши дни компьютеры используют как минимум 32-битные числа с плавающей запятой. Эта страница дает точность (количество бит до e^-16
, правильное в машинном представлении). Для 32 бит это значение равно 24
. Я не смог найти много информации о калькуляторе, кроме вики-страницы , которая говорит, что ее точность равна 14
. Больше чем наполовину меньше, чем поплавок, не определенный в этом стандарте IEEE.
То, что sqrt
там, - противная функция. Для вычисления его значения требуется достаточно много вычислений . Множество шагов означает много арифметических ошибок, чем ниже точность, тем дальше от истинного значения, которое он получает Это также зависит от точного алгоритма, выбранного в функции sqrt
. Вы можете проверить, возвращает ли math.sqrt(4^2)
то, что он должен вернуть, и возвращает ли math.sqrt(4^2))/(2*4)
ровно половину этого.
Борьба с числовыми ошибками в вычислениях - это целая дисциплина сама по себе, и рецепты различаются в зависимости от того, какое уравнение вы решаете.
Есть этот пост , рассматривающий квадратные уравнения.
Или, может быть, в вашем случае вы будете счастливы, просто отбросив все, кроме нескольких чисел, после десятичной точки в окончательном ответе.