Skip to content

Commit

Permalink
precision update
Browse files Browse the repository at this point in the history
  • Loading branch information
ttodua committed Dec 30, 2022
1 parent bd66336 commit d18b7e0
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 11 deletions.
4 changes: 4 additions & 0 deletions js/base/functions/number.js
Expand Up @@ -93,6 +93,10 @@ function precisionFromString (str) {
const numStr = str.replace (/\de/, '')
return parseInt (numStr) * -1
}
// support integer formats (without dot) like '1', '10' etc
if (str.indexOf ('.') === -1) {
return str.length * -1
}
// default strings like '0.0001'
const split = str.replace (/0+$/g, '').split ('.')
return (split.length > 1) ? (split[1].length) : 0
Expand Down
17 changes: 7 additions & 10 deletions js/digifinex.js
Expand Up @@ -408,25 +408,22 @@ module.exports = class digifinex extends Exchange {
const withdraw = withdrawStatus > 0;
const active = deposit && withdraw;
const feeString = this.safeString (currency, 'min_withdraw_fee'); // withdraw_fee_rate was zero for all currencies, so this was the worst case scenario
const fee = this.parseNumber (feeString);
const minWithdrawString = this.safeString (currency, 'min_withdraw_amount');
const minWithdraw = this.parseNumber (minWithdrawString);
const minDepositString = this.safeString (currency, 'min_deposit_amount');
const minDepositPrecisionLength = this.precisionFromString (minDepositString);
// define precision with temporary way
const feePrecisionLength = this.precisionFromString (feeString);
const minWithdrawPrecisionLength = this.precisionFromString (minWithdrawString);
const minDeposit = this.parseNumber (minDepositString);
const maxFoundPrecision = Math.max (feePrecisionLength, Math.max (minWithdrawPrecisionLength, minDepositPrecisionLength));
const precision = this.parseNumber (this.parsePrecision (this.numberToString (maxFoundPrecision)));
const minWithdraw = this.parseNumber (minWithdrawString);
const fee = this.parseNumber (feeString);
// define precision with temporary way
const minFoundPrecision = Precise.stringMin (feeString, Precise.stringMin (minDepositString, minWithdrawString));
const precision = this.parseNumber (minFoundPrecision);
const networkId = this.safeString (currency, 'chain');
const networkCode = this.networkIdToCode (networkId);
const network = {
'info': currency,
'id': networkId,
'network': networkCode,
'active': active,
'fee': this.parseNumber (feeString),
'fee': fee,
'precision': precision,
'deposit': deposit,
'withdraw': withdraw,
Expand Down Expand Up @@ -472,7 +469,7 @@ module.exports = class digifinex extends Exchange {
'active': active,
'deposit': deposit,
'withdraw': withdraw,
'fee': fee,
'fee': this.parseNumber (feeString),
'precision': undefined,
'limits': {
'amount': {
Expand Down
4 changes: 4 additions & 0 deletions php/Exchange.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion python/ccxt/base/exchange.py
Expand Up @@ -1435,9 +1435,12 @@ def check_address(self, address):

def precision_from_string(self, str):
# support string formats like '1e-4'
if ('e' in str):
if 'e' in str:
numStr = re.sub(r'\de', '', str)
return int(numStr) * -1
# support integer formats (without dot) like '1', '10' etc
if not ('.' in str):
return len(str) * -1
# default strings like '0.0001'
parts = re.sub(r'0+$', '', str).split('.')
return len(parts[1]) if len(parts) > 1 else 0
Expand Down

0 comments on commit d18b7e0

Please sign in to comment.