From b7d39eaafd15975e24b02990ae135f712149264e Mon Sep 17 00:00:00 2001 From: Austin Chen Date: Fri, 25 Mar 2022 15:31:46 -0700 Subject: [PATCH] Format large money amounts with 'k' and 'm' --- common/util/format.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/common/util/format.ts b/common/util/format.ts index 05a8f702..0f07c2dd 100644 --- a/common/util/format.ts +++ b/common/util/format.ts @@ -7,10 +7,22 @@ const formatter = new Intl.NumberFormat('en-US', { minimumFractionDigits: 0, }) +// E.g. 1234 => "M$ 1,234"; 23456 => "M$ 23k" export function formatMoney(amount: number) { - const newAmount = Math.round(amount) === 0 ? 0 : amount // handle -0 case + let newAmount = Math.round(amount) === 0 ? 0 : amount // handle -0 case + let suffix = '' + if (newAmount > 10 * 1000) { + suffix = 'k' + newAmount /= 1000 + } else if (newAmount > 10 * 1000 * 1000) { + suffix = 'm' + newAmount /= 1000 * 1000 + } return ( - ENV_CONFIG.moneyMoniker + ' ' + formatter.format(newAmount).replace('$', '') + ENV_CONFIG.moneyMoniker + + ' ' + + formatter.format(newAmount).replace('$', '') + + suffix ) }