From b09e9f364dc136c064a993e7d08f76d4f6de9f4c Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Tue, 24 May 2022 14:46:21 -0400 Subject: [PATCH] fix: significant digits bug fix --- lib/utils.js | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/lib/utils.js b/lib/utils.js index db131e8..bba7981 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -37,14 +37,35 @@ export function numToAlphabeticalString(num) { return `#${s}` || undefined; } +let topOutAt100AndValidate = (x) => { + // return 10; + if (x == x) { + return x > 99 ? 99 : x < 0 ? 2 : x; + } else { + return 10; + } +}; + export function formatLargeOrSmall(num) { let result; if (num >= 1) { result = toLocale(truncateValueForDisplay(num)); } else if (num > 0) { - result = num.toFixed(-Math.floor(Math.log(num) / Math.log(10)) + 1); - } else if (num < -1) { - result = num.toFixed(-Math.floor(Math.log(-num) / Math.log(10)) + 1); + let candidateNumSignificantDigits = + -Math.floor(Math.log(num) / Math.log(10)) + 1; + let numSignificantDigits = topOutAt100AndValidate( + candidateNumSignificantDigits + ); + result = num.toFixed(numSignificantDigits); + } else if (-1 < num) { + let candidateNumSignificantDigits = + -Math.floor(Math.log(Math.abs(num)) / Math.log(10)) + 1; + let numSignificantDigits = topOutAt100AndValidate( + candidateNumSignificantDigits + ); + result = num.toFixed(numSignificantDigits); + } else if (num <= -1) { + result = "-" + toLocale(truncateValueForDisplay(-num)); } else { result = toLocale(num); //return "~0" }