좋은지식/잡학다식

[JAVA] 자바의 지수 표현 없애기 E (BigDecimal)

알라르방 2023. 1. 13. 15:11

엑셀 데이터를 변수로 변환 시에 지수(E)가 붙을때가 있다.

예를 들면 3887418290.3 -> 3.8874182903E9

 

BigDecimal 객체를 쓸때 지수 표현식을 간단히 없애는 방법이다.

이 때 대상 숫자가 정수이면 new BigDecimal

대상 숫자가 소수이면 BigDecimal.valueOf() 함수를 사용한다.

소수일 때 new BigDecimal로 객체를 생성하게 되면 아래와 같이 쓰레기 데이터가 뒤에 붙으니 조심!

 

double a = 3887418290.3;
BigDecimal b1 = new BigDecimal(a);

BigDecimal b2 = BigDecimal.valueOf(a);


System.out.println(a);
System.out.println(b1);
System.out.println(b2);

 

3.8874182903E9
3887418290.30000019073486328125
3887418290.3

 

한줄로 간단히 정리

Double.compare(a, (long)a) == 0 ? new BigDecimal(a) : BigDecimal.valueOf(a)

반응형