File size: 636 Bytes
d9494a5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
export const formatToShortNumber = (amount: number) => {
  const sign = amount < 0 ? '-' : '';
  const absoluteAmount = Math.abs(amount);

  const format = (scaled: number, suffix: string) =>
    sign + scaled.toFixed(1).replace(/\.?0+$/, '') + suffix;

  if (Number(absoluteAmount.toFixed(1)) < 1000) {
    return format(absoluteAmount, '');
  }
  if (Number((absoluteAmount / 1_000).toFixed(1)) < 1000) {
    return format(absoluteAmount / 1_000, 'k');
  }
  if (Number((absoluteAmount / 1_000_000).toFixed(1)) < 1000) {
    return format(absoluteAmount / 1_000_000, 'm');
  }
  return format(absoluteAmount / 1_000_000_000, 'b');
};