Ръководство за Прецизност и Толеранси в Beancount
Управлението на числената прецизност е крайъгълен камък на счетоводството с двойно записване. В дигиталното счетоводство, особено когато се работи с множество валути, цени на акции и дробни акции, малки разлики при закръглянето могат бързо да доведат до фрустриращи грешки при балансирането. Beancount предоставя сложна, но интуитивна система за работа с прецизност и задаване на приемливи толеранси. Това ръководство ще ви преведе през начина, по който тя работи. ⚙️
Основни Концепции за Прецизност
Основната цел на Beancount е да гарантира, че всяка транзакция се балансира до нула. Въпреки това, изчисленията, включващи цени или разходи, често дават резултати с повече десетични знаци, отколкото е практично да се записват. Системата за толеранс позволява малки, приемливи небаланси.
Автоматично Извличане на Толеранс
По подразбиране, Beancount автоматично извлича необходимия толеранс за всяка транзакция. Това извличане се обработва индивидуално за всяка транзакция и се изчислява отделно за всяка валута.
Правилото е просто: толерансът е половината от последната значеща цифра на числата, присъстващи в записите на транзакцията.
Например, разгледайте тази покупка:
2013-04-03 * "Buy Fund"
Assets:Fund 10.22626 FUND {37.61 USD}
Assets:Cash -384.61 USD
Beancount извлича толерансите, както следва:
- За стоката
FUND, числото10.22626има 5 десетични знака. Толерансът е половината от последната цифра, така че $0.00001 \div 2 = 0.000005$FUND. - За стоката
USD, числото-384.61има 2 десетични знака. Толерансът е половината от последната цифра, така че $0.01 \div 2 = 0.005$USD.
Правила за Тегло на Транзакцията
Когато проверява дали дадена транзакция е балансирана, Beancount изчислява "теглото" на всеки запис. Правилата за това изчисление са:
- Проста Сума: Ако даден запис има само сума (например,
Assets:Cash -100.00 USD), неговото тегло е тази точна сума. - Запис с Цена: Ако даден запис има цена за единица (например,
10 FUND @ 38.46 USD), неговото тегло есума × цена. - Запис с Разход: Ако даден запис има обща цена (например,
10 FUND {384.61 USD}), неговото тегло е общата сума на разходите. - Разход и Цена: Ако даден запис има както обща цена, така и цена за единица (например,
10 FUND {384.61 USD} @ 38.46 USD), само общата цена се използва за балансиране. Цената за единица се третира като коментар или бележка.