| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- // 시장 데이터 표시용 순수 유틸 (서버·클라이언트 공용 — 'use client'/'use server' 미선언)
- // 소수 포함 숫자 (지수·환율·금리 등) — 천 단위 구분 + 소수 자릿수 지정. null 은 —
- export function formatDecimal(value: number|null|undefined, fractionDigits = 2): string {
- if (value === null || value === undefined) {
- return '—';
- }
- return value.toLocaleString('ko-KR', {
- minimumFractionDigits: fractionDigits,
- maximumFractionDigits: fractionDigits
- });
- }
- // bp(만분율) → % 문자열 (부호 없이 절대값, 색·부호는 마크업에서 병행). 예: 1234 → "12.34%"
- export function formatBpRate(bp: number|null|undefined): string {
- if (bp === null || bp === undefined) {
- return '—';
- }
- return `${(Math.abs(bp) / 100).toFixed(2)}%`;
- }
- // 금리 % (미고시 null → —). 예: 3.5 → "3.50%"
- export function formatRatePercent(value: number|null|undefined, fractionDigits = 2): string {
- if (value === null || value === undefined) {
- return '—';
- }
- return `${value.toFixed(fractionDigits)}%`;
- }
- // 최신 기준일 라벨 (tradeDate null 이면 대체 문구)
- export function tradeDateLabel(date: string|null|undefined): string {
- return date ? `${date} 기준` : '데이터 준비 중';
- }
- // 공시 접수번호 → DART 원문 링크
- export function dartViewerUrl(rceptNo: string): string {
- return `https://dart.fss.or.kr/dsaf001/main.do?rcpNo=${encodeURIComponent(rceptNo)}`;
- }
|