3

Я вводил несколько чисел в Excel 2010 и заметил, что, похоже, проблема с плавающей запятой. Я взял сумму четырех чисел, ожидая ноль, и получил очень маленькое число, близкое к нулю. Я подумал: «Хорошо, проблема с плавающей запятой, что угодно». Но потом я заметил, что если добавить их в другом порядке, полученная сумма равна нулю.

Почему их добавление в другом порядке влияет на Excel? Я этого не ожидал. Да, я понимаю, что 1.13E-13 очень маленький и очень близок к нулю. Мне интересно, почему разница в расчете основана на порядке сложения.

Скриншот Excel

Исходные данные следующие:

573.7   
-144.79 
-309.84 
-119.07 
1.136868E-13    =sum(A1:A4)
0.000000E+00    =A1+A2+A3+A4
1.13687E-13 =A4+A3+A2+A1

1 ответ1

2

Если вы используете функцию формулы Evaluate в Excel, в промежуточных результатах вы увидите, что a+b+c+d анализируется слева направо. Таким образом, a+b+c+d фактически вычисляется как ((a+b)+c)+d.

Другими словами, сначала вычисляется результат a+b (и сохраняется в формате IEEE754), затем к этому результату добавляется c и т.д.

Это объясняет, почему результат отличается, потому что (принимая во внимание неточность промежуточных результатов), ((a+b)+c)+d не равно a+(b+(c+d)).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .