Files
factorio-signal-exporter/web/lib/formatNumber.ts
2026-06-03 12:52:45 +02:00

23 lines
703 B
TypeScript

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): string {
const abs = Math.abs(v);
for (const { limit, divisor, suffix } of SI_THRESHOLDS) {
if (abs >= limit) {
const formatted = new Intl.NumberFormat(locale, {
maximumFractionDigits: 3,
minimumFractionDigits: 0,
}).format(v / divisor);
return `${formatted}${suffix}`;
}
}
return new Intl.NumberFormat(locale, {
maximumFractionDigits: 0,
minimumFractionDigits: 0,
}).format(v);
}