Files
sub2api/frontend/src/utils/pricing.ts
T
feeeei 720c405e35 feat: add model plaza with group-scoped pricing showcase
- public /model-plaza page (standalone + admin-embedded) listing groups
  with discounted effective prices alongside LiteLLM official reference
- faceted platform/group/rate filters: cross-dimension options gray out
  instead of disappearing, platform-tinted chips via accent color-mix
- paid-price columns highlighted with per-platform tint band
- OptionalJWT middleware so anonymous and signed-in users share one route
- admin settings: enable switch, require-auth switch, markdown description
2026-07-28 16:19:41 +08:00

25 lines
1.1 KiB
TypeScript

/**
* formatScaled formats a per-token (or per-request) USD price scaled by `scale`.
*
* formatScaled(0.000003, 1_000_000) → "$3" // per 1M tokens
* formatScaled(0.5, 1) → "$0.5" // per request
* formatScaled(null, 1_000_000) → "-"
* formatScaled(0.000003, 1_000_000, 2) → "$3.00" // pad to ≥2 decimals
* formatScaled(1.25e-8, 1_000_000, 2) → "$0.0125" // longer decimals kept as-is
*
* Uses toPrecision(10) then strips trailing zeros to avoid IEEE 754 display noise.
* `minFractionDigits` pads the result back up to a minimum number of decimals.
*/
export function formatScaled(value: number | null, scale: number, minFractionDigits = 0): string {
if (value == null) return '-'
let s = (value * scale).toPrecision(10).replace(/\.?0+$/, '')
if (minFractionDigits > 0 && !s.includes('e')) {
const dot = s.indexOf('.')
const digits = dot === -1 ? 0 : s.length - dot - 1
if (digits < minFractionDigits) {
s = (dot === -1 ? `${s}.` : s) + '0'.repeat(minFractionDigits - digits)
}
}
return `$${s}`
}