From 2a4504c9265a1faf0bbac9224d7feebe79b903ac Mon Sep 17 00:00:00 2001 From: necklace Date: Fri, 15 Apr 2022 17:34:00 +0800 Subject: [PATCH] Fix inaccurate floating point numbers used in credit offers #3487 --- .../Account/CreditOffer/CreditOfferPage.jsx | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/app/components/Account/CreditOffer/CreditOfferPage.jsx b/app/components/Account/CreditOffer/CreditOfferPage.jsx index 383f8ab4ff..bb5ddc1ce7 100644 --- a/app/components/Account/CreditOffer/CreditOfferPage.jsx +++ b/app/components/Account/CreditOffer/CreditOfferPage.jsx @@ -361,11 +361,6 @@ class CreditOfferPage extends React.Component { } let {info, selectAsset} = this.state; if (asset && info && selectAsset) { - let mortgageAsset = new Asset({ - asset_id: selectAsset.get("id"), - real: amount, - precision: selectAsset.get("precision") - }); let index = info.acceptable_collateral.findIndex( v => v[0] == selectAsset.get("id") ); @@ -385,13 +380,17 @@ class CreditOfferPage extends React.Component { let price = new Price({base: baseAsset, quote: quoteAsset}); // let currentAmount = price.toReal() * mortgageAsset.getAmount(); - let mortgageAmount = - (1.0 / price.toReal()) * mortgageAsset.getAmount(); // Keeping it consistent with the App, this may violate Graphene's price representation convention. + let mortgageAmount = (1.0 / price.toReal()) * amount; // Keeping it consistent with the App, this may violate Graphene's price representation convention. if (Number.isNaN(mortgageAmount)) { mortgageAmount = 0; } else { mortgageAmount = Math.ceil(mortgageAmount); } + let mortgageAsset = new Asset({ + asset_id: selectAsset.get("id"), + real: mortgageAmount, + precision: selectAsset.get("precision") + }); let rateAsset = new Asset({ asset_id: asset.get("id"), real: amount, @@ -407,7 +406,7 @@ class CreditOfferPage extends React.Component { amount, error: null, maxAmount: false, - mortgageAmount, + mortgageAmount: mortgageAsset.getAmount(), rateAmount }, this._checkBalance