const SI_THRESHOLDS = [ { limit: 1_000_000_000, divisor: 1_000_000_000, suffix: 'G' }, { limit: 1_000_000, divisor: 1_000_000, suffix: 'M' }, { limit: 1_000, divisor: 1_000, suffix: 'K' }, ] as const; export function formatSI(v: number, locale?: string, fractionDigits?: number): string { const abs = Math.abs(v); const fd = fractionDigits ?? 3; for (const { limit, divisor, suffix } of SI_THRESHOLDS) { if (abs >= limit) { const formatted = new Intl.NumberFormat(locale, { maximumFractionDigits: fd, minimumFractionDigits: 0, }).format(v / divisor); return `${formatted}${suffix}`; } } return new Intl.NumberFormat(locale, { maximumFractionDigits: fractionDigits != null ? fractionDigits : 0, minimumFractionDigits: 0, }).format(v); }