From 31c5f25c5f14d2fe349eccbab28c8254f0f965d2 Mon Sep 17 00:00:00 2001 From: EmeraldBlock <69981203+EmeraldBlock@users.noreply.github.com> Date: Sun, 27 Sep 2020 20:48:07 -0500 Subject: [PATCH] Change formatBigNumber Modifies function formatBigNumber so that it displays values up to a certain number of significant figures. Also added third "precision" argument, defaults to 3 significant figures. The value sometimes overflows on Hub, think that shouldn't be hard to fix --- src/js/core/utils.js | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/js/core/utils.js b/src/js/core/utils.js index a469a7a0..ddab18f2 100644 --- a/src/js/core/utils.js +++ b/src/js/core/utils.js @@ -266,9 +266,10 @@ export function findNiceIntegerValue(num) { * Formats a big number * @param {number} num * @param {string=} separator The decimal separator for numbers like 50.1 (separator='.') + * @param {number=} number of significant figures to include (for values >= 1000) * @returns {string} */ -export function formatBigNumber(num, separator = T.global.decimalSeparator) { +export function formatBigNumber(num, separator = T.global.decimalSeparator, precision = 3) { const sign = num < 0 ? "-" : ""; num = Math.abs(num); @@ -286,23 +287,21 @@ export function formatBigNumber(num, separator = T.global.decimalSeparator) { if (num < 1000) { return sign + "" + num; - } else { - let leadingDigits = num; - let suffix = ""; - for (let suffixIndex = 0; suffixIndex < bigNumberSuffixTranslationKeys.length; ++suffixIndex) { - leadingDigits = leadingDigits / 1000; - suffix = T.global.suffix[bigNumberSuffixTranslationKeys[suffixIndex]]; - if (leadingDigits < 1000) { - break; - } - } - const leadingDigitsRounded = round1Digit(leadingDigits); - const leadingDigitsNoTrailingDecimal = leadingDigitsRounded - .toString() - .replace(".0", "") - .replace(".", separator); - return sign + leadingDigitsNoTrailingDecimal + suffix; } + let leadingDigits = num; + let suffixIndex = 0; + for (; suffixIndex < bigNumberSuffixTranslationKeys.length; ++suffixIndex) { + leadingDigits = leadingDigits / 1000; + if (leadingDigits < 1000) { + break; + } + } + const suffix = T.global.suffix[bigNumberSuffixTranslationKeys[suffixIndex]]; + const leadingDigitsRounded = Number(leadingDigits.toPrecision(precision)); + const leadingDigitsNoTrailingDecimal = leadingDigitsRounded + .toString() + .replace(".", separator); + return sign + leadingDigitsNoTrailingDecimal + suffix; } /**