Let our company have made a profit of 5 cents, which has to be divided amongst a company (70%) and an investor (30%). Cents can't be divided, so We can't give 3.5 and 1.5 cents. If we round up, the company gets 4 cents, the investor gets 2, which means we need to conjure up an additional cent.
The best solution to avoid this pitfall is to use allocation according to ratios.
import'money2.dart';final profit =Money.fromBigInt(BigInt.from(5), usd); // 5¢var allocation = profit.allocationAccordingTo([70, 30]);assert(allocation[0] ==Money.fromBigInt(BigInt.from(4), usd)); // 4¢assert(allocation[1] ==Money.fromBigInt(BigInt.from(1), usd)); // 1¢// The order of ratios is important:allocation = profit.allocationAccordingTo([30, 70]);assert(allocation[0] ==Money.fromBigInt(BigInt.from(2), usd)); // 2¢assert(allocation[1] ==Money.fromBigInt(BigInt.from(3), usd)); // 3¢
Allocation to N Targets
An amount of money can be allocated to N targets using allocateTo().