Задайте для каждой траты, кто и в какой доле её несёт, добавьте уже переданные друг другу деньги и получите баланс каждого и оставшиеся переводы.
Калькулятор считает только по тем значениям, которые вы вводите. Он не запрашивает курсы валют и пересчитывает исключительно по курсу, который вы вписали сами, не выполняет банковских переводов и не сохраняет введённые имена и суммы, а также не оставляет их в адресной строке.
Что подготовить до расчёта
Список тех, кто рассчитывается вместе. От 2 до 20 человек, имена должны различаться.
Перечень трат и тот, кто фактически оплатил каждую из них.
Правило, по которому распределяется каждая трата. Поровну означает 1 у всех; чтобы разделить жильё по ночам, впишите количество ночей у каждого.
Суммы, уже подтверждённые в валюте расчёта. Если в выписке по карте есть сумма списания, впишите именно её и не пересчитывайте заново по сегодняшнему курсу.
Деньги, уже переданные друг другу в поездке, и отменённые или возвращённые траты, если они были.
Для трат без подтверждённой суммы списания понадобится сумма в валюте оплаты и курс, который к ней применяется. Курс нужно уточнить и вписать самостоятельно, калькулятор его не запрашивает.
Проверьте введённые данные
Часть расходов ещё не зафиксирована в валюте расчёта
Пока все расходы не зафиксированы в одной валюте расчёта, план переводов не строится. Завершите пересчёт строк ниже и посчитайте снова.
Основа расчёта
Отметьте, о какой поездке идёт речь, чтобы потом не перепутать скопированные результаты. В расчёте заметка не участвует.
Все суммы нужно вводить в одной этой валюте. Для денег, потраченных в другой валюте, уточните фактически списанную сумму и переведите её в эту валюту самостоятельно.
Если отметить, к результату добавится пометка о том, что он основан на оценке. Сами рассчитанные значения при этом не меняются.Если вы вносите трату, пересчитанную по курсу, пометка об оценке появляется в результате автоматически, независимо от этой галочки.
Участники
От 2 до 20 человек. Настоящие имена необязательны, а телефоны и номера счетов вводить не нужно.
Траты и возвраты
Для каждой траты укажите, кто платил, и веса распределения. Чтобы разделить жильё по датам, добавьте по одной трате на каждую ночь и поставьте 1 только тем, кто ночевал там в эту ночь.
Уже переданные деньги
Это деньги, уже отправленные во время поездки. Это не трата, а расчёт, который уменьшает балансы, поэтому не вносите их повторно как трату.
Если деньгами вы ещё не обменивались, оставьте пустым.
Пока ничего не рассчитано. Внесите участников и траты и нажмите Построить таблицу расчёта.
Введённые данные изменились. Посчитайте заново.
Результат расчёта
Основные итоги
Баланс по каждому
Плюс означает деньги к получению, минус - деньги к отправке. Сумма балансов всех участников равна ровно нулю.
Доля по каждой трате
У кого вес равен 0, доля тоже равна 0. Сумма долей в строке в точности совпадает с общей суммой этой траты.
Переводы, закрывающие расчёт
Это детерминированный вариант взаимозачёта: при одних и тех же данных всегда получается одна и та же таблица. Он не гарантирует наименьшего числа переводов среди всех возможных вариантов.
Передавать друг другу больше нечего. Расчёт завершён.
На чём основан этот результат
Суммы, внесённые как подтверждённые списания, - это значения, которые вы сами сверили в валюте расчёта. Суммы, пересчитанные по курсу, посчитаны только по тому курсу, который вы вписали, и могут отличаться от фактического списания.
Веса по каждой трате - это правило, о котором вы договорились. Калькулятор не судит о том, какой способ распределения справедливее.
Уже сделанные переводы посчитаны исходя из того, что внесённые суммы действительно были переданы.
Остаток, который не делится нацело на наименьшую денежную единицу, достаётся конкретным участникам по правилам из раздела Как ведётся расчёт ниже.
Как ведётся расчёт
Расчёт идёт в таком порядке. Все суммы обрабатываются как целые числа наименьшей единицы валюты расчёта, поэтому по дороге не появляется погрешность в дробной части.
По каждой трате идеальная доля участника равна общей сумме, умноженной на его вес и делённой на сумму весов, и каждое значение округляется вниз до наименьшей единицы.
Единицы, оставшиеся после округления вниз, раздаются по одной, начиная с того, у кого отброшенная дробная часть была больше. Именно поэтому сумма долей всегда в точности равна общей сумме.
Если совпадают даже дробные части и порядок определить нельзя, единицы достаются по возрастанию идентификатора участника. Идентификаторы на этом экране присваиваются в порядке добавления участников, поэтому тот, кто выше в списке, получает единицу первым. Изменение порядка отображения не меняет того, кому достаётся остаток.
Баланс участника - это сумма, которую он внёс за других, минус то, что приходится на него самого, плюс уже отправленные им переводы и минус уже полученные. У того, кто получил возврат, внесённая сумма уменьшается на эту величину, поэтому баланс может уйти в минус.
Сумма балансов всех участников равна ровно нулю. Расчётное ядро проверяет это условие напрямую и при расхождении не выдаёт результат, а останавливается с ошибкой.
Возврат распределяется со знаком минус ровно по тем же весам, что и исходная трата. Суммарный возврат не может превышать сумму исходной траты.
Предложение по переводам поочерёдно взаимно погашает того, кому причитается больше всех, и того, кто должен больше всех. При равных суммах сортировка идёт по возрастанию идентификатора участника.
Для траты, пересчитываемой по курсу, сумма в исходной валюте умножается на курс и округляется до наименьшей единицы валюты расчёта; ровно половина округляется вверх. Умножение и округление выполняются в дробях, поэтому погрешность в дробной части не возникает. Такой пересчёт делается один раз, в самом начале, ещё до распределения долей.
Если хотя бы одна трата не пересчитана, не строятся ни балансы по участникам, ни план переводов, потому что таблица расчёта со смешанными валютами - это неверная таблица.
Суммы на экране - это строки с разделителями, предназначенные для чтения. Не складывайте их заново для проверки, а смотрите на итоги, приведённые рядом в таблице.
Два способа разделить жильё
Результат по жилью зависит от того, о чём вы договоритесь. Калькулятор не решает, какой способ справедливее, и оба способа сохраняют общую сумму в точности.
Распределение по тем, кто ночевал в конкретную ночь
Добавьте по одной трате на каждую ночь проживания и поставьте 1 только тем, кто действительно ночевал там в эту ночь. Если цена различается по датам, впишите фактическую цену той ночи. Если платить надо, а в эту ночь не ночевал никто, расчёт останавливается: сначала нужно решить, кто берёт это на себя.
Пропорционально числу человек, умноженному на ночи
Внесите всю стоимость жилья как одну трату, а в веса впишите количество ночей у каждого. Учтите, что расходы, возникшие из-за пустого номера, которым никто не пользовался, тоже делятся пропорционально общему числу ночей.
Условный пример
Условный пример для демонстрации экрана. Это не настоящая цена проживания и не условия какого-либо конкретного сервиса бронирования.
Трое, А, Б и В, рассчитываются в USD, а жильё за 450 долларов оплатил А. А и Б прожили 2 ночи, В - 1 ночь.
При распределении по тем, кто ночевал в конкретную ночь, 225 долларов за первую ночь делятся на троих, а 225 долларов за вторую - между А и Б. Доли выходят 187.50 / 187.50 / 75.00 долларов.
Кнопка примера заполняет форму именно этим способом. В результате А получает 262.50 доллара, и всё закрывается, как только Б отправит 187.50 доллара, а В - 75.00 доллара.
При распределении пропорционально числу человек, умноженному на ночи, 450 долларов вносятся одной тратой с весами 2 / 2 / 1 и дают 180 / 180 / 90 долларов. Оба способа дают одну и ту же сумму - 450 долларов.
После нажатия на пример введённые вами значения заменяются значениями примера. Вернуть их можно кнопкой Отменить действие в верхней части экрана.
Частые вопросы
Чем это отличается от обычного калькулятора для деления счёта?
Обычный калькулятор для деления счёта делит одну общую сумму поровну на всех либо позволяет вписать сумму по каждому вручную. Если нужно добавить чаевые и сразу увидеть, сколько выходит на человека, он быстрее. Этот калькулятор принимает много трат, даёт каждой трате своего плательщика и свои веса и учитывает возвраты и уже переданные деньги, чтобы построить баланс по каждому и оставшиеся переводы. Если вы просто делите поровну один обед, возьмите калькулятор для деления счёта.
Это наименьшее возможное число переводов?
Нет. Поочерёдно взаимно погашаются тот, кто должен больше всех, и тот, кому причитается больше всех, поэтому при одних и тех же данных всегда выходит одна и та же таблица, но теоретически может существовать вариант, который закрывается меньшим числом переводов. Считайте это одним из способов завершить расчёт.
Как вносить деньги, потраченные в иностранной валюте?
По каждой трате сначала выберите, есть ли уже подтверждённая сумма списания в валюте расчёта. Если такая сумма есть, например в выписке по карте, впишите именно её: она не пересчитывается заново по сегодняшнему курсу. Если подтверждённой суммы ещё нет, выберите пересчёт по курсу и внесите сумму в валюте оплаты вместе с курсом. Достаточно одной траты с курсом, чтобы к результату добавилась пометка об оценке. Курсы валют калькулятор не запрашивает, поэтому курс нужно уточнить и вписать самостоятельно.
Куда вносить комиссию за оплату за рубежом?
Если комиссия уже включена в сумму списания, отдельно её вносить не нужно, иначе она будет посчитана дважды. Только для комиссии, списанной отдельно от суммы покупки, добавьте ещё одну строку траты и весами решите, кто её несёт. Никаких комиссий поверх курса калькулятор не добавляет.
Одному и тому же человеку всё время достаётся на 1 наименьшую денежную единицу больше.
Потому что делить меньше наименьшей денежной единицы невозможно. Доля каждого округляется вниз, а оставшиеся единицы раздаются по одной, начиная с того, у кого отброшенная дробная часть была больше. Только так сумма долей в точности совпадает с общей суммой. Если и дробные части одинаковы, идёт возрастание идентификатора участника, то есть единицу получает тот, кого добавили раньше.
Почему нельзя изменить веса в строке возврата?
Возврат отменяет исходную трату, поэтому правило распределения должно быть тем же. Изменённые веса превратили бы это не в отмену, а в новое распределение, и балансы исказились бы. Поэтому строка возврата целиком повторяет веса выбранной исходной траты. Компенсацию или выплату иного характера вносите не как возврат, а как отдельную трату и договаривайтесь о ней отдельно.
Остаются ли где-нибудь введённые имена и суммы?
Нет. Расчёт идёт только внутри браузера, на сервер ничего не отправляется. Значения не передаются в ссылке, поэтому они не остаются ни в адресной строке, ни в истории браузера. Взамен при обновлении страницы введённые данные пропадают, так что при необходимости пользуйтесь кнопкой Скопировать результат.
Чего этот калькулятор не делает
Он не запрашивает курсы валют. Пересчёт идёт только по курсу, который вы вписали сами, и, если остаётся непересчитанный расход, план переводов не строится.
Он не добавляет автоматически комиссию за оплату за рубежом или за снятие наличных. Комиссию, не включённую в сумму списания, нужно внести вручную отдельной строкой траты.
Он не выполняет банковских переводов и не подключается к счетам. Номер счёта он даже не спрашивает.
Он не создаёт ночи проживания по датам. Трату на каждую ночь нужно добавлять самостоятельно.
Он не угадывает, кто участвовал в какой трате. Он не считает само собой, что на экскурсию сходили все вместе.
Он не советует, какой способ распределения справедливее.
Он не сохраняет введённые данные. При обновлении страницы или закрытии окна они пропадают.
Похожие калькуляторы
Если нужно просто разделить одну сумму на месте, калькуляторы ниже проще.
Калькулятор деления счёта
— Делит одну общую сумму поровну на всех или позволяет вписать сумму по каждому вручную. Сразу показывает процент чаевых и сумму на человека. Он не работает с несколькими тратами, с плательщиками по каждой трате и с уже переданными деньгами.
Калькулятор чаевых
— Считает чаевые к сумме счёта. Итоговую сумму вместе с чаевыми внесите тратой в этот калькулятор.
Калькулятор процентов
— Пригодится, когда нужно сначала прикинуть пропорцию, прежде чем задавать веса.