[JAVA] 정수 3자리 마다

사용자가 큰 정수를 볼 때 쉼표로 구분된 숫자를 사용하면 숫자를 더 빨리 알아낼 수 있습니다.

또한 double형, float형 등의 지수형은 데이터가 커지면 데이터에 영문 E를 붙여 표현한다. (지수 표기법)

사용자가 해당 숫자 앞에 올 수 있도록 큰 숫자에 쉼표를 추가하는 방법을 찾고 있었습니다.

1. DecimalFormat을 이용한 방법

DecimalFormat 객체를 생성할 때 인자로 “###,###”을 입력하여 포맷을 설정합니다.

.format 메서드에 숫자를 인수로 전달하면 원하는 형식으로 숫자가 반환됩니다.

int num1 = 2147483647; // –2,147,483,648 ~ 2,147,483,647
log.info("정수 출력 : {}", num1);

DecimalFormat decFormat = new DecimalFormat("###,###");
log.info("decFormat 3자리 콤마 표현 : {}", decFormat.format(num1));

DecimalFormat decFormat2 = new DecimalFormat("####,####");
log.info("decFormat 4자리 콤마 표현 : {}", decFormat2.format(num1));

(결과)

정수 출력 : 2147483647
decFormat 3자리 콤마 표현 : 2,147,483,647
decFormat 4자리 콤마 표현 : 21,4748,3647

2. NumberFormat을 이용한 방법

NumberFormat은 지정된 범위에서 사용되는 표기법으로 문자열을 표현합니다.

NumberFormat 객체를 생성할 때 getInstance에 Locale 인수를 전달합니다.

Locale.US는 기본적으로 설정되어 있으므로 미국 숫자 표기법(3자리마다 쉼표)을 따릅니다.

NumberFormat numberFormatUS = NumberFormat.getInstance();
log.info("numberFormat 콤마 표현 : {}", numberFormatUS.format(num1));
numberFormat 콤마 표현 : 2,147,483,647

3. 지수를 정수와 쉼표로 표현

BigDecimal은 Java 언어로 숫자를 정확하게 표현할 수 있는 표현식입니다.

BigDecimal 유형으로 변환하면 매우 정확한 소수 자릿수가 생성됩니다.

마찬가지로 위에서 사용된 DecimalFormat 및 NumberFormat은 쉼표 형식으로 변환하는 데 사용되었습니다.

DecimalFormat과 NumberFormat의 차이점은 소수점의 유무입니다.

double num2 = 4.5782189464E8; // 1.7E+/-308(15개의 자릿수)
log.info("지수 출력 : {}", num2);

BigDecimal bigDecimal = new BigDecimal(num2);
log.info("지수를 정수로 출력 : {}", bigDecimal);

log.info("decFormat 지수 표현 : {}", decFormat.format(num2));
log.info("numberFormatUS 지수 표현 : {}", numberFormatUS.format(num2));

(결과)

지수 출력 : 4.5782189464E8
지수를 정수로 출력 : 457821894.63999998569488525390625
decFormat 지수 표현 : 457,821,895
numberFormatUS 지수 표현 : 457,821,894.64

4. 다른 나라의 숫자 표기 사용

이탈리아와 프랑스의 숫자 표기를 프린트 했습니다.

이탈리아는 세 자리 숫자를 점으로, 프랑스는 공백으로 나눕니다.

오? 엄청난.

NumberFormat numberFormatItaly = NumberFormat.getInstance(Locale.ITALY);
log.info("numberFormatItaly 지수 표현 : {}", numberFormatItaly.format(num2));

NumberFormat numberFormatFrance = NumberFormat.getInstance(Locale.FRANCE);
log.info("numberFormatFrance 지수 표현 : {}", numberFormatFrance.format(num2));

(결과)

numberFormatItaly 지수 표현 : 457.821.894,64
numberFormatFrance 지수 표현 : 457 821 894,64

5. 숫자 형식

메소드는 NumberFormat 클래스의 모든 메소드를 사용합니다.

DecimalFormat은 NumberFormat에서 상속받는 것으로 나타났습니다.


아래와 같이 정수를 입력하면 형식(긴 숫자) 방법,

지수를 대입하면 형식(이중 숫자) 메서드가 트리거됨



(졸업 증서)

편리한 정수 식을 사용할 수 있습니다.

소수점 이하를 얻으려면 지수를 표현할 때 NumberFormat을 사용하십시오.

소수 자릿수를 늘리려면 DecimalFormat을 사용할 수 있습니다.

참조

https://jsonobject.466

https://blog.naver.com/PostView.nhn?blogId=windboy83&logNo=220684213153

https://codechacha.com/en/java-number-format-comma/