export function formatNumber(value) { const parsed = Number(value); if (!Number.isFinite(parsed)) { return "-"; } return new Intl.NumberFormat("zh-CN").format(parsed); } export function formatPercent(value) { const parsed = Number(value); if (!Number.isFinite(parsed)) { return "-"; } return `${parsed.toFixed(2)}%`; } // 服务端 RTP 一律以 ppm(百万分比)存储避免浮点误差,展示层统一在这里换算成百分比。 export function formatPercentFromPPM(value) { const parsed = Number(value); if (!Number.isFinite(parsed) || parsed <= 0) { return "-"; } return `${(parsed / 10_000).toFixed(2)}%`; } export function formatMultiplierFromPPM(value) { const parsed = Number(value); if (!Number.isFinite(parsed)) { return "-"; } return `${(parsed / 1_000_000).toFixed(2).replace(/\.?0+$/, "")}x`; }