Простая математика Excel неверна

Простая математика Excel неверна

Во-первых, я не хочу округлять числа, я использую цифры в десятичной системе счисления, поэтому Excel не должен беспокоиться о простом сложении и вычитании.

A|  665.110000000000000000000000000000
B|  4.990000000000000000000000000000
C|  =a1+b1
D|  670.790000000000000000000000000000
E|  1,335.890000000000000000000000000000
F|  =e1-(c1+d1)

Я должен был получить -5, но F1 возвращается

-4.999999999999770000000000000000

Это финансовый документ, поэтому я хочу избежать округления, точнее, по существу. Зачем мне это нужно? Я установил формат ячеек на Валюта с 2 знаками после запятой, и я получу правильное отображаемое значение, но для всех вычислений я все равно получу -4,9999...7, что приводит к дальнейшим ошибкам с условным форматированием и т. д.

решение1

Проблема в базовом оборудовании почти всех компьютеров. Они основаны на двоичных системах, поэтому они не считают от 0 до 9, вместо этого они считают только 0 и 1, или основание 2.

Это нормально, если только, как вы обнаружили, вам не нужны десятичные числа высокой точности. Компьютеры могут считать только дробями, которые являются степенями половины, т. е. 1/2, 1/4, 1/8, 1/16, 1/32 и т. д. Для компьютера нет простого способа представить некоторые числа, такие как 1/3 или 4,99, совершенно точно, не жертвуя при этом производительностью.

Excel довольно хорошо скрывает этот факт, только если вы включите 20 или около того знаков после запятой, вы увидите эту ошибку. Он делает это округлением, но округлением только тогда, когда отображается результат.

Вы говорите, что это для финансовых расчетов, вам действительно нужно, чтобы конечный результат отображался с точностью до 20 знаков после запятой? Или вам просто нужно быть уверенным, что расчет выполняется с достаточной точностью, чтобы не возникало ошибок округления. Если это последнее, вам, возможно, придется просто поверить, что Excel уже несколько лет выполняет свою работу для бесчисленных финансовых организаций без проблем. И вам не нужно беспокоиться об этих ошибках округления, которые вызывают у вас проблемы.

решение2

На этот вопрос уже отвечали здесь.

То, что вы используете "круглое" число в десятичной системе счисления, не помогает — компьютер хранит числа в двоичной системе счисления. Ваше круглое число в десятичной системе счисления преобразуется в число в двоичной системе счисления, которое в итоге повторяется, вы теряете информацию при обратном преобразовании этого десятичного числа.

Пользователи компьютеров обходят эту проблему двумя способами:

1) выполните расчеты с определенным количеством знаков после запятой, а затем округлите их до меньшего количества знаков после запятой. 2) используйте BCD или какое-либо другое точное десятичное представление.

Насколько мне известно, Excel не использует вариант №2, поэтому выберите другой вариант.

решение3

В Excel есть опция «Точность отображения», которая автоматически округляет числа до выбранной вами точности отображения.

http://support.microsoft.com/kb/78113

Однако я бы не рекомендовал вам этого делать, поскольку это может привести к ошибкам округления в ваших расчетах, поскольку вы указываете Excel округлять до 2 знаков после запятой, тогда как в настоящее время ошибка округления составляет 15 (примерно) знаков после запятой, поэтому это никак не повлияет на ваши расчеты.

Связанный контент