자바에서 큰 숫자를 가독성 좋게 하는 방법

2022년 02월 28일

TOC

우테코 과정을 시작하고 2번째 미션인 로또 미션을 진행하며 로또 우승 상금으로 큰 단위의 숫자를 입력해야하는 상황을 마주했습니다.

우승 금액이 1등의 경우 20억을 받는 것으로 설정하는 만큼 숫자의 단위가 엄청 크고, 숫자를 입력하면서도, 읽으면서도 매우 불편합니다..🥲

저 또한 미션을 진행하면서도 숫자를 올바르게 입력한 것이 맞는지 확인하면서 눈이 빠지는줄 알았습니다.

PR을 보내고 리뷰어 코니가 이러한 숫자들을 가독성있게 변경하는 방법에 대하여 알려주어, 해당 내용을 정리해보고자 합니다.

public enum Rank {

    FIRST(2000000000, 6, false),
    SECOND(30000000, 5, true),
    THIRD(1500000, 5, false),
    FOURTH(50000, 4, false),
    FIFTH(5000, 3, false),
    FAIL(0, 0, false);

    private final int prize;
    private final int matched;
    private final boolean bonus;
}

큰 숫자들을 가독성 있게 하는 방법

Java7버전 이후부터는 숫자 Literal사이에는 원하는 수 만큼 Underscore(_)를 넣을 수 있다고 합니다.

이러한 기능을 사용하면 숫자들의 그룹을 구분할 수 있어 더욱 가독성 있는 코드를 만들 수 있습니다.

Oracle Java SE 문서의 예시를 보면 신용카드번호, 보안번호, 긴 16진수 등의 예시를 들었습니다.

Underscore사용이 불가능한 경우

  • 숫자의 시작, 끝에는 위치 불가
  • 부동소수점의 소수점에 인접한 위치에는 위치 불가
  • 숫자 문자열이 예상되는 위치에는 위치 불가
  • float, long타입을 알려주는 F 또는 L 앞에는 위치 불가

적용 예시

위의 내용을 적용하여 코드를 변경해봤습니다. 확실히 숫자들 사이에 Underscore(_)를 넣어 큰 숫자를 표시하니 가독성이 좋아진 것을 확인할 수 있었습니다.

public enum Rank {

    FIRST(2_000_000_000, 6, false),
    SECOND(30_000_000, 5, true),
    THIRD(1_500_000, 5, false),
    FOURTH(50_000, 4, false),
    FIFTH(5_000, 3, false),
    FAIL(0, 0, false);

    private final int prize;
    private final int matched;
    private final boolean bonus;
}

Reference

Underscores in Numeric Literals

Buy me a coffeeBuy me a coffee
Written by

@Seongwon

기술공유를 통해 새로운 가치 창조을 추구하는 백엔드 개발자 오성원입니다.
©SeongwonOh