countSignificantDecimals to /old-ui/app/util

This commit is contained in:
Victor Baranov 2018-11-13 22:55:14 +03:00
parent cff599d0ee
commit 8376da35ac
5 changed files with 43 additions and 43 deletions

View File

@ -139,32 +139,6 @@ function removeListeners (listeners, emitter) {
})
}
/**
* returns the length of truncated significant decimals for fiat value
* @param {float} val The float value to be truncated
* @param {number} len The length of significant decimals
* returns {number} The length of truncated significant decimals
**/
function countSignificantDecimals (val, len) {
if (Math.floor(val) === val) {
return 0
}
const decimals = val.toString().split('.')[1]
const decimalsArr = decimals.split('')
let decimalsLen = decimalsArr.slice(0).reduce((res, val, ind, arr) => {
if (Number(val) === 0) {
res += 1
} else {
arr.splice(1) // break reduce function
}
return res
}, 0)
decimalsLen += len
const valWithSignificantDecimals = `${Math.floor(val)}.${decimalsArr.slice(0, decimalsLen).join('')}`
decimalsLen = parseFloat(valWithSignificantDecimals).toString().split('.')[1].length
return decimalsLen || 0
}
module.exports = {
removeListeners,
applyListeners,
@ -175,5 +149,4 @@ module.exports = {
hexToBn,
bnToHex,
BnMultiplyByFraction,
countSignificantDecimals,
}

View File

@ -1,6 +1,5 @@
import React, { Component } from 'react'
import { formatBalance } from '../util'
import { countSignificantDecimals } from '../../../app/scripts/lib/util'
import { formatBalance, countSignificantDecimals } from '../util'
import PropTypes from 'prop-types'
class FiatValue extends Component {
@ -20,11 +19,10 @@ class FiatValue extends Component {
const value = formatBalance(props.value, 6, undefined, props.network)
if (value === 'None') return value
let fiatDisplayNumber, fiatTooltipNumber
const splitBalance = value.split(' ')
fiatTooltipNumber = Number(splitBalance[0]) * conversionRate
fiatDisplayNumber = fiatTooltipNumber.toFixed(countSignificantDecimals(fiatTooltipNumber, 2))
const fiatTooltipNumber = Number(splitBalance[0]) * conversionRate
const fiatDisplayNumber = fiatTooltipNumber.toFixed(countSignificantDecimals(fiatTooltipNumber, 2))
const valueStyle = props.valueStyle ? props.valueStyle : {
width: '100%',

View File

@ -40,6 +40,7 @@ module.exports = {
isHex: isHex,
exportAsFile: exportAsFile,
isInvalidChecksumAddress,
countSignificantDecimals,
}
function valuesFor (obj) {
@ -251,3 +252,29 @@ function exportAsFile (filename, data) {
document.body.removeChild(elem)
}
}
/**
* returns the length of truncated significant decimals for fiat value
* @param {float} val The float value to be truncated
* @param {number} len The length of significant decimals
* returns {number} The length of truncated significant decimals
**/
function countSignificantDecimals (val, len) {
if (Math.floor(val) === val) {
return 0
}
const decimals = val.toString().split('.')[1]
const decimalsArr = decimals.split('')
let decimalsLen = decimalsArr.slice(0).reduce((res, val, ind, arr) => {
if (Number(val) === 0) {
res += 1
} else {
arr.splice(1) // break reduce function
}
return res
}, 0)
decimalsLen += len
const valWithSignificantDecimals = `${Math.floor(val)}.${decimalsArr.slice(0, decimalsLen).join('')}`
decimalsLen = parseFloat(valWithSignificantDecimals).toString().split('.')[1].length
return decimalsLen || 0
}

View File

@ -1,5 +1,5 @@
const assert = require('assert')
const { sufficientBalance, countSignificantDecimals } = require('../../../app/scripts/lib/util')
const { sufficientBalance } = require('../../../app/scripts/lib/util')
describe('SufficientBalance', function () {
@ -39,13 +39,3 @@ describe('SufficientBalance', function () {
assert.ok(!result, 'insufficient balance found.')
})
})
describe('countSignificantDecimals(val, len) function', () => {
it('returns correct significant decimals', () => {
assert.equal(6, countSignificantDecimals(0.00001232756347, 2))
assert.equal(4, countSignificantDecimals(0.00010000003454305430504350, 2))
assert.equal(0, countSignificantDecimals(1.0000, 2))
assert.equal(0, countSignificantDecimals(2, 2))
assert.equal(3, countSignificantDecimals('2.03243', 2))
})
})

View File

@ -0,0 +1,12 @@
const assert = require('assert')
const { countSignificantDecimals } = require('../../../../old-ui/app/util')
describe('countSignificantDecimals(val, len) function', () => {
it('returns correct significant decimals', () => {
assert.equal(6, countSignificantDecimals(0.00001232756347, 2))
assert.equal(4, countSignificantDecimals(0.00010000003454305430504350, 2))
assert.equal(0, countSignificantDecimals(1.0000, 2))
assert.equal(0, countSignificantDecimals(2, 2))
assert.equal(3, countSignificantDecimals('2.03243', 2))
})
})