Это потому, что ошибки во внутренних представлениях 4.64 и 2.0 конструктивно сочетаются (что означает, что они дают большую ошибку).
Технически говоря, 2.64 тоже точно не хранится. Однако есть конкретное представление, соответствующее 2,64. Однако подумайте о том, что 4.64 и 2.0 хранятся не совсем точно. Ошибки в 4.64 и 2.0 объединяются, чтобы произвести еще большую ошибку, достаточно большую, чтобы их вычитание не дало представления 2,64.
Ответ отклоняется на 3 * 10 ^ -16. Чтобы дать какой-то пример того, как это может происходить, давайте представим, что представление для 4.64 слишком мало на 2 * 10 ^ -16, а представление для 2.0 слишком велико на 1 * 10 ^ -16. Тогда вы получите
(4.64 - 2*10^-16) - (2.0 + 1*10^-16) = 2.64 - 3*10^-16
Таким образом, когда расчет завершен, две ошибки объединились, чтобы создать еще большую ошибку. Но если представление для 2,64 отключено только на 1 * 10 ^ -16, то это не будет считаться компьютером равным 2,64.
Также возможно, что 4.64 просто имеет большую ошибку, чем 2.64, даже если 2.0 не имеет ошибки. Если представление 4.64 на 3 * 10 ^ -16 слишком мало, вы получите то же самое:
(4.64 - 3*10^-16) - 2.0 = 2.64 - 3*10^-16
Опять же, если представление 2,64 отключено только на 1 * 10 ^ -16, то этот результат не будет считаться равным 2,64.
Я не знаю точных ошибок в реальных представлениях, но происходит нечто подобное, только с другими значениями. Надеюсь, это имеет смысл. Не стесняйтесь обращаться за разъяснениями.
person
jpmc26
schedule
23.05.2013
nothing wrong
с этим. - person The Dark Knight   schedule 23.05.2013