Skip to content

Commit a3db278

Browse files
committed
Fix short numeric format code
1 parent b1c2538 commit a3db278

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

src/components/NumericDisplay/NumericDisplay.js

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ function formatNumber(number = 0, shortForm = true) {
77
if (shortForm) {
88
//if short form is true
99
const exponent = Math.floor(Math.log10(Math.abs(Math.max(number, 1)))); //exponent component of number
10-
const exponent3 = Math.floor(exponent / 3) * 3; //exponent with multiple of 3 for engineering notation
10+
const exponent3 = Math.floor(exponent / 3) * 3; //exponent with multiple of 3 integer numeric digits for engineering notation
1111
const prefixes = [
1212
'',
1313
'K',
@@ -31,7 +31,7 @@ function formatNumber(number = 0, shortForm = true) {
3131
'OD',
3232
'ND',
3333
'V',
34-
]; //numeric prefixes
34+
]; //numeric prefixes for large numbers
3535
if (Math.abs(number) < 1000) {
3636
//if number is less than 1 thousand
3737
return Math.min(
@@ -40,17 +40,16 @@ function formatNumber(number = 0, shortForm = true) {
4040
).toString(); //return number rounded to nearest integer
4141
} else {
4242
//if number is 1 thousand or more
43-
const roundedNumber = number.toPrecision(3); //round number to 3 significant figures
43+
const mantissa = parseFloat(number) / Math.pow(10, exponent3); //get the mantissa value from 1 to 999
44+
const roundedNumber = mantissa.toPrecision(3); //round number to 3 significant figures
4445
return (
45-
Math.min(
46-
999,
47-
parseFloat(roundedNumber) / Math.pow(10, exponent3),
48-
).toPrecision(3) + prefixes[exponent3 / 3]
46+
Math.min(999, Math.max(-999, Number(roundedNumber))).toPrecision(3) +
47+
prefixes[exponent3 / 3]
4948
); //return coefficient of engineering notation with numeric prefix
5049
}
5150
} else {
5251
//if short form is false
53-
return Math.round(number).toString(); //return number rounded to nearest integer
52+
return Math.round(number).toString(); //return the number rounded to nearest integer
5453
}
5554
}
5655
const NumericDisplay = (

0 commit comments

Comments
 (0)