diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-08-27 05:57:39 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-08-27 05:57:39 +0200 |
commit | b47522c11bf5c426f998254f9dc61f0018229b44 (patch) | |
tree | 1dfe53eca3e2c36eec5a40ac72aebfdd52b6736a | |
parent | 63914ab53b18ec29269c2c3fe4e01ac9b36330e5 (diff) |
proper rounding for amount operations
-rw-r--r-- | src/types.ts | 4 | ||||
-rw-r--r-- | src/wallet.ts | 4 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/types.ts b/src/types.ts index 9492d1a75..d016b7fea 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1312,7 +1312,7 @@ export namespace Amounts { } value = value + x.value + Math.floor((fraction + x.fraction) / fractionalBase); - fraction = (fraction + x.fraction) % fractionalBase; + fraction = Math.floor((fraction + x.fraction) % fractionalBase); if (value > Number.MAX_SAFE_INTEGER) { return { amount: getMaxAmount(currency), saturated: true }; } @@ -1440,7 +1440,7 @@ export namespace Amounts { export function fromFloat(floatVal: number, currency: string) { return { currency, - fraction: (floatVal - Math.floor(floatVal)) * fractionalBase, + fraction: Math.floor((floatVal - Math.floor(floatVal)) * fractionalBase), value: Math.floor(floatVal), }; } diff --git a/src/wallet.ts b/src/wallet.ts index e7a36f7b7..3d095fc06 100644 --- a/src/wallet.ts +++ b/src/wallet.ts @@ -413,6 +413,8 @@ export function selectPayCoins(cds: CoinWithDenom[], paymentAmount: AmountJson, denom.feeDeposit).amount) >= 0; isBelowFee = Amounts.cmp(accFee, depositFeeLimit) <= 0; + console.log("coin selection", { coversAmount, isBelowFee, accFee, accAmount, paymentAmount }); + if ((coversAmount && isBelowFee) || coversAmountWithFee) { return cdsResult; } @@ -759,6 +761,8 @@ export class Wallet { cds.push({coin, denom}); } + console.log("coin return: selecting from possible coins", { cds, amount } ); + return selectPayCoins(cds, amount, amount); } |