■ 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
'Java' 카테고리의 다른 글
[ 자바 코딩 ] Java Number - max() 함수 (500) | 2018.04.12 |
---|---|
[ 자바 코딩 ] Java Number - min() 함수 (473) | 2018.04.11 |
[ 자바 코딩 ] Java Number - rint() 함수 (486) | 2018.04.09 |
[ 자바 코딩 ] Java Numbers - floor() 함수 (480) | 2018.04.04 |
[ 자바 코딩 ] Java Number - ceil() 함수 (491) | 2018.04.03 |