Используете EXCEL для точных вычислений в широких диапазонах? У меня для вас сюрприз.

Открываем Excel.
В одну ячейку вносим такую формулу: =(2^10+0,2)-2^10
А во вторую - такую: =(2^50+0,2)-2^50

Кто-то скажет, что разница в данном примере несущественна?
Достаточно немного усложнить примеры и посмотреть на разницу:
=((2^50+0,2)-2^50) х 1000000
=((2^10+0,2)-2^10) х 1000000
(вместо *, поставлен х, потому что Pikabu по другому не отображает)
Если кто не знает, что такое "^" - это возведение в степень.
И да, это - не только проблема Excel.
Корень зла кроется в механизме операций с плавающей точкой с помощью двоичной арифметики.
3
Автор поста оценил этот комментарий
Эксель нужен для того, чтобы сложить циферки из клиент-банка.
Для расчетов в широком диапазоне используйте математические пакеты.

Корень зла кроется не в двоичной арифметике, а в том, что эксель, как и большинство других программ, учитывает лишь 16-18 старших десятичных знаков, что каждый год открывают для себя журналистски настроенные индивиды. Чтобы увидеть особенности двоичной арифметики, нужно к 0 прибавить очень много (n) раз 0,1 и сравнить результат с 0,1 * n.

Это такой типичный пример, когда проблемы не существует, пока гуманитарий не начнет копаться в инженерной области. Дело в том, что раз уж кто-то начал что-то вычислять с высокой/неограниченной точностью, то он должен вести также контроль погрешности, о чем ни Эксель, ни Калькулятор даже не в курсе.
раскрыть ветку
Автор поста оценил этот комментарий
Плавающая точка...
У меня вчера в Excel 2010 было такое (пруфов нет, ибо целью не задавался):
есть 2 числа с 5 знаками после запятой. Эти числа получены в результате суммирования множеств подобных чисел (все с точностью 0,00001). Какой результат вычитания одного числа из другого? Логично предположить, что это будет число (положительное или отрицательное) с не более, чем 5-ю знаками после запятой. Авотхуй! Получилось число с 10-ю знаками после запятой.
"Одно из чисел имело более высокую точность", - предположите вы. Я предположил то же. Копируем, вставляем не формулу, а значения... Оба числа имеют точность 10^(-5), а результат 10^(-10).
1
DELETED
Автор поста оценил этот комментарий
дорогие мальчики и девочки, почитайте как устроен тип данных с плавающей запятой:
https://ru.wikipedia.org/wiki/Число_с_плавающей_запятой

т.е. число записывается как N = M x (n^p)

т.е. ваше число может находиться между M x (n^p) и (M+1) x (n^p), в в тетрадке оно конечно может быть 1.73, но в компьютере это может быть и 1.7300000012 (это я отсебятину, цифры другие конечно, но считать не хочется)
Автор поста оценил этот комментарий
^ - знак возведения в степень... Мне сказали, что если на экзамене так скажу, то исключат. Информатику вёл декан....
раскрыть ветку
Автор поста оценил этот комментарий
вы бета-тестер?