All files / packages/tools/src/utilities roundNumber.ts

87.5% Statements 7/8
56.52% Branches 13/23
100% Functions 1/1
87.5% Lines 7/8

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39                        128x 128x     128x 128x 9x     119x                         119x        
/**
 * Truncates decimal points to that there is at least 1+precision significant
 * digits.
 *
 * For example, with the default precision 2 (3 significant digits)
 * * Values larger than 100 show no information after the decimal point
 * * Values between 10 and 99 show 1 decimal point
 * * Values between 1 and 9 show 2 decimal points
 *
 * @param value - to return a fixed measurement value from
 * @param precision - defining how many digits after 1..9 are desired
 */
function roundNumber(value: string | number, precision = 2): string {
  Iif (value === undefined || value === null || value === '') {
    return 'NaN';
  }
  value = Number(value);
  if (value < 0.0001) {
    return `${value}`;
  }
  const fixedPrecision =
    value >= 100
      ? precision - 2
      : value >= 10
      ? precision - 1
      : value >= 1
      ? precision
      : value >= 0.1
      ? precision + 1
      : value >= 0.01
      ? precision + 2
      : value >= 0.001
      ? precision + 3
      : precision + 4;
  return value.toFixed(fixedPrecision);
}
 
export default roundNumber;