2

Во-первых, я не хочу округлять свои числа, я использую цифры 10 оснований, поэтому 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

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

3 ответа3

6

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

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

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

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

3

Здесь уже был дан ответ.

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

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

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

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

1

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

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

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

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