본문 바로가기
개발/개발 필기

금액이 너무 많아 요약을 해야 할 때(숫자가 클 때)

by nicksoon 2024. 12. 27.
반응형

긴 숫자를 읽기 쉽게 변환하는 방법은 많은 곳에서 유용합니다.

특히, 큰 금액이나 데이터 크기를 간결하게 표시할 수 있습니다.

 

문제: 긴 숫자를 읽기 쉽게 변환하기

예를 들어, 24,343,800이라는 숫자를 그대로 표시하면 가독성이 떨어지고 UI가 깨지게 됩니다

만약 모든 값을 보여줘야 하는 중요한 값이 아니라면

이를 단위를 사용해 "2억+"처럼 표현한다면 훨씬 직관적일 것입니다.

 

아래와 같은 코드로 작성을 하면 좋을 것 같아요

function formatLargeNumber(number) {
    if (typeof number !== "number" || isNaN(number)) {
        throw new Error("입력 값은 숫자여야 합니다.");
    }

    const units = ["", "만", "십만+", "백만+", "천만+", "억+", "십억+"];
    let unitIndex = 0;

    // 10,000 단위로 나누기 시작
    do {
        if (unitIndex === 0) {
            number = Math.floor(number / 10000); // 첫 번째는 10,000으로 나눔
        } else {
            number = Math.floor(number / 10); // 이후부터는 10씩 나눔
        }
        unitIndex++;
    } while (number >= 10 && unitIndex < units.length - 1);

    return `${Math.floor(number)}${units[unitIndex]}`;
}

// 예제 사용
console.log(formatLargeNumber(24343800)); // 결과: "2억+"
console.log(formatLargeNumber(123456));   // 결과: "1십만+"
console.log(formatLargeNumber(9876543210)); // 결과: "9십억+"

 

코드 작동 방식

입력 검증

입력 값이 숫자인지 확인합니다. 숫자가 아니면 오류를 발생시킵니다.

 

단위 배열 정의

const units = ["", "만", "십만+", "백만+", "천만+", "억+", "십억+"];

units 배열은 단위(만, 십만+, 백만+ 등)를 나타냅니다.

 

숫자 나누기 및 단위 선택

  • 첫 번째 반복:
    • 10000으로 나눠 만 단위로 줄입니다.
  • 이후 반복:
    • 10씩 나눠 단위를 점점 올립니다.

결과 반환

  • 최종적으로 변환된 숫자와 적절한 단위를 합쳐 반환합니다.

 

반응형