'자바 double 값을 가장 가까운 정수 값으로 변환하기'에 해당되는 글 1건




■ Java Number - round() 함수



round() 함수는 리턴되는 data type 에 따라 입력값에 가장 가까운 long 이나 int 값을 반환 합니다. 



Syntax

public static long round(double d)

public static int round(float f)



Sample


Case 1

1
2
double a = 9.8;
System.out.println("Math.round(a) = " + Math.round(a));
cs

9.8 이 가장 가까운 long 값은 10 입니다. 

int 값이 아니라 long 이라고 한 이유는 위 syntax 를 잘 보시면 이해 하실 수 있습니다. 

입력 값이 double 이므로 return data type 을 long 으로 생각 하시면 됩니다. 


위 코드를 실행 하면 아래와 같은 결과값이 나옵니다. 


Math.round(a) = 10


1
int intA = Math.round(a);
cs

만약 위와 같이 위 double a 값을 사용하고 한다면 오류가 발생 합니다. 



double 값을 입력 하여 리턴 타입이 long 인데요. 이 값을 int 로 받으려고 하니 오류가 납니다. 


1
int intA = (int)Math.round(a);
cs

위와 같이 int 형을 형 변환을 해주시면 문제 없이 사용 하실 수 있습니다. 



Case 2

1
2
double d = 15.5;
System.out.println("Math.round(d) = " + Math.round(d));
cs

round() 함수는 rint() 함수와 달리 5 이상을 올림 처리를 합니다. 

따라서 15.5 의 가장 가까운 long 값은 15가 아니라 (rint 함수는 15입니다) 16 이 됩니다.


위 코드 실행 결과는 아래와 같습니다. 


Math.round(d) = 16



Case 3

1
2
float e = 10.6f;
System.out.println("Math.round(e) = " + Math.round(e));
cs

이번에는 인자 값의 data type 이 float 입니다. 

리턴되는 값의 data type 은 int 가 되어야 합니다. 


10.6 의 가장 가까운 int 값은 11 입니다. 

위 코드의 실행 결과는 아래와 같습니다. 


Math.round(e) = 11


1
long longE = Math.round(e);
cs

만약 위와 같은 코드를 작성 했다고 가정 했을때 문제가 없을 까요? 


float 값을 입력 받았으므로 int 값이 리턴 되는데 long 으로 받으려고 합니다. 

이 경우는 문제가 없습니다. long 형이 int 형보다 크기 때문에 어떤 경우라도 문제 없이 처리가 됩니다. 


long ==> 64bit

int ==> 32bit



Case 4

1
2
float f = 15.5f;
System.out.println("Math.round(f) = " + Math.round(f));
cs

15.5의 가장 가까운 int 값은 무엇 일까요? 

5 이상은 올림 처리 하여 16이라는 값을 리턴 합니다. 


코드 결과 값은 아래와 같습니다. 


Math.round(f) = 16




 도움이 되셨다면 로그인이 필요 없는 

▼ 하트 클릭 한번 부탁 드립니다 

감사합니다 :D


블로그 이미지

쉬운코딩이최고

Android, Java, jsp, Linux 등의 프로그래밍 언어를 소개 합니다.

,