PDA

Просмотр полной версии : 1копейка в реализации



Женя
12.08.2008, 12:50
В акте реализации за месяц сумма в столбце"по ценам фактической реализации"на 1 копейку больше,чем в отчёте из кипера.что с этим делать? нужно ли исправить?и как?:o

SH
13.08.2008, 00:21
Не нужно.
Бухгалтеры утверждают, что расхождение на копейку допустимо.
Расхождение происходит из-за округлений.

Cinis
27.12.2013, 19:22
У меня тоже вылезла разница в копейку в суммах фактической реализации. Все цены на все товары круглые, откуда-то взялось это ...,99. И точно ли с этим ничего не нужно делать, очевидно же, что это неправильно?

Brambrulet
27.12.2013, 20:45
Круглые цены это хорошо. А скидки? А за обслуживание? А весовой товар?

SH
28.12.2013, 00:27
Вначале немного школьной теории.
1/3 + 1/3 + 1/3 = 1 (сумма трех третьих равна единице).
1/3 = 0,(3) (ноль запятая три в периоде, т.е. бесконечная десятичная дробь вида 0,33333333333333333...)
Соответственно,
0,(3)+0,(3)+0,(3)=0,(9)
Таким образом, бесконечная десятичная дробь 0,99999999... равна единице.
Эту самую "бесконечную десятичную дробь" многие программы округляют до 0,99.
По сути же, это же самая 1,0
Кипер и хаус немного по разному управляют округлением.
В частности, хаус хранит гораздо больше знаков после запятой, чем показывает (думаю, там тип real, погуглить предлагается в качестве домашнего задания, но суть в том, что цифр десятичной дроби после запятой - очень много).
Это означает, что, например, если в кипере был заказ на 120 рублей, и этот заказ был оплачен 40 рублей (одна треть) наличными, а 80 рублей (две трети) кредиткой, и мы делаем импорт в хаус по валютам, и у нас в чеке была одна чашка кофе, то в документ расхода по наличным это чашка кофе попадет как 0,33 порции, а в документ расхода по наличным - 0,66 порций (вообще, я теоретизирую, надо бы проверить на практике этот конкретный пример, но сам пример правильный как наглядное пособие).
При суммировании этих частей одной порции и при "удачной" цене за порцию, запросто может вылезти одна копейка суммовой разницы.

Поэтому. Несмотря на то, что кажется "очевидным", это - правильно. Возвращаясь к школьному примеру - разницы между 0.99 и 1 в практических приложениях часто нет.

Brambrulet
29.12.2013, 12:01
Кстати да! Оплата несколькими валютами!

А ещё цена за несколько штук.

Ещё бывает в ряде мест для авторских коктейлей не набивают отдельно по 10мл, а позволяют дробное количество для позиций по 50мл.

Собственно Алексей правильно написал про азы. Только в реальности всё ещё интереснее. Мы забиваем дроби в десятичной системе, а хранятся они в восьмеричной. Точное соответствие по дробям у этих систем счисления только 0.5. И всё!

То есть если у вас пробивают 0.2 от 50мл, то это вовсе не 10мл, это 9.9999999999999999999.
Тоже самое относится к скидкам и наценкам - они тоже хранятся в виде дробей.

Ну и плюс стоимость хранится в копейках - дробная часть округляется.

Удивительно скорее то, что данные так часто сходятся.

SH
29.12.2013, 16:44
Удивительно скорее то, что данные так часто сходятся.
Методики давно отработаны, проблемы возникают при передачи данных из одной программы в другую - если подходы к округлению разные, то выплывает разница.