Найти в Дзене

Проблема точности в 1С ERP: Что такое «паразитическая дробная часть»?

Вопрос пользователя: «Что за «паразитическая дробная часть»? У нас в документах иногда появляются количества типа 1499,999 упаковок. Мы думали, это глюк. Оказывается, это известная проблема?» Суть проблемы:
Пользователи сталкиваются с ошибками округления при работе с упаковками (стр. 2 PDF). Что может 1С ERP?
Это проблема точности вычислений, связанная с двоичной арифметикой компьютеров. Суть подхода (пример проблемы): Пример из документации: Почему так происходит: Преимущества подхода: Решение и рекомендации: Итог простыми словами:
Компьютер «думает» в двоичной системе, а мы — в десятичной. Из-за этого иногда возникают ошибки, как при переводе с одного языка на другой. Типичные сценарии использования: Сценарий 1: Пересчет.

Вопрос пользователя: «Что за «паразитическая дробная часть»? У нас в документах иногда появляются количества типа 1499,999 упаковок. Мы думали, это глюк. Оказывается, это известная проблема?»

Суть проблемы:
Пользователи сталкиваются с ошибками округления при работе с упаковками (стр. 2 PDF).

Что может 1С ERP?
Это проблема точности вычислений, связанная с двоичной арифметикой компьютеров.

Суть подхода (пример проблемы):

Пример из документации:

  • Номенклатура А хранится в упаковках, где 1 упаковка = 6 штук. Количество в штуках: 420 000 шт. При пересчете в упаковки должно быть 70 000 упаковок. Но компьютер выдает 70 000,014 упаковок.
  • Номенклатура Б: 1 упаковка = 12 штук. Количество: 18 000 шт. Должно быть 1 500 упаковок. Компьютер выдает 1 499,999 упаковок.

Почему так происходит:

  • Компьютер считает в двоичной системе. Десятичные дроби 1/6 и 1/12 бесконечны в двоичной системе.
  • Из-за этого накапливается ошибка округления.

Преимущества подхода:

  • Понимание. Бухгалтер знает, что это не глюк, а математика.

Решение и рекомендации:

  1. Не пугайтесь. Это известная проблема, которую разработчики решают.

Итог простыми словами:
Компьютер «думает» в двоичной системе, а мы — в десятичной. Из-за этого иногда возникают ошибки, как при переводе с одного языка на другой.

Типичные сценарии использования:

Сценарий 1: Пересчет.

  • Бухгалтер видит 1499,999 вместо 1500. Понимает, что это погрешность.