diff options
author | Jacob Evans <jacob@dekz.net> | 2017-11-13 08:17:27 +0800 |
---|---|---|
committer | Jacob Evans <jacob@dekz.net> | 2017-11-13 08:17:27 +0800 |
commit | 42e3ab91a794f61d65008d969b3d48080b5035d7 (patch) | |
tree | 80d1bc9a2b750009cd30db2e10e33963d9e47023 /src/utils | |
parent | 5e77e8809abd96136fb11ebdc84a2aefa32d4cea (diff) | |
download | dexon-0x-contracts-42e3ab91a794f61d65008d969b3d48080b5035d7.tar.gz dexon-0x-contracts-42e3ab91a794f61d65008d969b3d48080b5035d7.tar.zst dexon-0x-contracts-42e3ab91a794f61d65008d969b3d48080b5035d7.zip |
Perform the division after multiplication to reduce compounding the rounding errors
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/order_state_utils.ts | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/utils/order_state_utils.ts b/src/utils/order_state_utils.ts index 4f57de9fe..7c10a5480 100644 --- a/src/utils/order_state_utils.ts +++ b/src/utils/order_state_utils.ts @@ -66,13 +66,13 @@ export class OrderStateUtils { const totalTakerTokenAmount = signedOrder.takerTokenAmount; const remainingTakerTokenAmount = totalTakerTokenAmount.minus(unavailableTakerTokenAmount); // 200 in order, 100 unavailable = 100 remaning, 0.5 remaining in taker proportion - const remainingTakerProportion = remainingTakerTokenAmount.dividedBy(totalTakerTokenAmount); - const remainingMakerTokenAmount = remainingTakerProportion.times(totalMakerTokenAmount); + const remainingMakerTokenAmount = remainingTakerTokenAmount.times(totalMakerTokenAmount) + .dividedToIntegerBy(totalTakerTokenAmount); // min allowance, balance in account of maker const fillableMakerTokenAmount = BigNumber.min([makerProxyAllowance, makerBalance]); // min ^, remaining order maker token amount const remainingFillableMakerTokenAmount = BigNumber.min(fillableMakerTokenAmount, remainingMakerTokenAmount); - // edge case when maker token is ZRX + // TODO: Handle edge case where maker token is ZRX with fee const orderRelevantState = { makerBalance, makerProxyAllowance, |