Стратегии округления десятичных чисел в корпоративных приложениях - PullRequest
3 голосов
/ 24 марта 2010

Что ж, меня интересует вещь с округлением десятичных дробей и хранением их в БД.

Проблема такая:

Допустим, у нас есть клиент и счет.

Общая стоимость счета-фактуры составляет 100,495 долларов США (из-за некоторого процента скидки, который не является целым числом), но отображается как 100,50 долларов США (при округлении только для печати в счете-фактуре). Он хранится в БД по цене $ 100,495, что означает, что, когда клиент вносит депозит в размере $ 100,50, на счету будет дополнительно 0,005 доллара. Если это округлено, оно будет отображаться как $ 0, но после нескольких счетов оно будет накапливаться, что может показаться неправильным (хотя на самом деле это не так).

Что лучше всего делать в этом случае. Сохраните значение в $ 100.50 или оставьте все как есть?

Ответы [ 4 ]

5 голосов
/ 24 марта 2010

Вы должны хранить число в точности так, как вы хотите, чтобы оно отражалось на их балансе.

Вы действительно взимаете с клиента полцента? Если да, это должно быть отражено в записи БД. Если нет, то не должно.

Но если бы я не проводил начисленные проценты ежедневно (как, например, Prosper.com), я бы придерживался единиц валюты, которые люди могут платить (или снимать) точно.

1 голос
/ 24 марта 2010

Я бы спас обоих (серьезно).

1 голос
/ 24 марта 2010

Храните оба. Ваши клиенты в любом случае не смогут оплатить сумму без округления кредитной картой, но ваши книги должны быть правильными.

1 голос
/ 24 марта 2010

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

...