Skip to main content

formatNumberWithUnits

숫자 혹은 숫자로 이루어진 문자열을 주어진 단위 별로 포맷팅하는 함수입니다.

  • 버림 단위(floorUnit)를 선택할 수 있습니다.
  • 소수 일 경우 소수점 자리수(decimal)를 선택할 수 있습니다. 단, 버림 단위가 존재할 경우 소수 부분은 제거됩니다.
  • 단위 사이 공백 추가 여부(space)를 선택할 수 있습니다.
  • 쉼표 사용 여부(commas)를 선택할 수 있습니다.

Code

🔗 실제 구현 코드 확인

Interface

typescript
interface Unit {
unit: string;
value: number;
}

type FloorUnit =
| 1
| 10
| 100
| 1_000
| 10_000
| 100_000
| 1_000_000
| 10_000_000
| 100_000_000
| 1_000_000_000
| 10_000_000_000
| 100_000_000_000
| 1_000_000_000_000;

interface FormatNumberWithUnitsOptions {
units?: Unit[] | readonly Unit[]; // default: []
commas?: boolean; // default: true
floorUnit?: FloorUnit; // default: 1
space?: boolean; // default: true
}
typescript
function formatNumberWithUnits(
value: number | string,
options?: FormatNumberWithUnitsOptions
): string;

Usage

기본 동작

typescript
import { formatNumberWithUnits } from '@modern-kit/utils';

const KRW_UNITS = [
{ unit: '조', value: 1_000_000_000_000 },
{ unit: '억', value: 100_000_000 },
{ unit: '만', value: 10_000 },
] as const;

// 기본 동작
formatNumberWithUnits(1234567) // "1,234,567"

formatNumberWithUnits(1234567, { units: KRW_UNITS }) // "123만 4,567"
formatNumberWithUnits(-1234567, { units: KRW_UNITS }) // "-123만 4,567", 음수 처리

formatNumberWithUnits('1234567', { units: KRW_UNITS }) // "123만 4,567", 숫자로 이루어진 문자열 허용

옵션 사용

typescript
import { formatNumberWithUnits } from '@modern-kit/utils';

const KRW_UNITS = [
{ unit: '조', value: 1_000_000_000_000 },
{ unit: '억', value: 100_000_000 },
{ unit: '만', value: 10_000 },
] as const;

// 단위 사이 공백 추가 (기본값: true)
formatNumberWithUnits(1234567, { units: KRW_UNITS, space: true }) // "123만 4,567"
formatNumberWithUnits(1234567, { units: KRW_UNITS, space: false }) // "123만4,567"

// 쉼표 사용 여부 (기본값: true)
formatNumberWithUnits(1234567, { units: KRW_UNITS, commas: true }) // "123만 4,567"
formatNumberWithUnits(1234567, { units: KRW_UNITS, commas: false }) // "123만 4567"

// 버림 단위 (기본값: 1)
formatNumberWithUnits(1234567, { units: KRW_UNITS, floorUnit: 1000 }) // "123만 4000"
formatNumberWithUnits(1234567, { units: KRW_UNITS, floorUnit: 10000 }) // "123만"

// 소수점 자리수 (기본값: 0)
formatNumberWithUnits(1234567.123, { units: KRW_UNITS, decimal: 2 }) // "123만 4,567.12"

// floorUnit이 1000으로 설정되어 있어서 1000 단위 미만은 버림 처리되고,
// decimal이 2로 설정되어 있지만 floorUnit 단위 만큼 버림 처리 되었으므로 소수는 표시되지 않습니다.
formatNumberWithUnits(1234567.123, {
units: KRW_UNITS,
decimal: 2,
floorUnit: 1000
}) // "123만 4,000"