반응형
< 연산하기 (자주 발생하는 에러 상황) >
# 자바에서 정수와 실수의 연산에 대해 알아보고, 실수로 인해 발생할 수 있는 버그를 예방하는 방법에 대하여 정리
- 정수와 실수의 연산 차이를 이해하고, 캐스팅을 활용하는 방법
# 자바의 데이터 타입
- 종류가많음 (옛날 언어)
- 실수형은 대부분 double 사용하는게 좋은 특히 GPS
# Eclipse로 예제 코드 언어 작성
- 연산 이라는 명칭으로 프로젝트 생성후, VarTest 라는 클래스를 생성하여 작성
# 예제 코드
package 연산;
public class VarTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 10;
int b = 13;
float c = 0f;
// 정수 나누기 정수 = 결과도 정수!! 버그생기기 슆다
c = (a + b) / 2;
System.out.println("a와 b의 평균은 = " + c);
// 둘중의 하나는 실수로 만들어주면 된다. 정수를 다른 데이터로 바꾸는것 캐스팅
// 파이썬의 경우는 a = 3 을 바꾼다면 float(a) 이런식으로 바꿈
// 자바에서는 변수명 왼쪽에 () 안에 작성해준다.
c = (float)(a + b) / 2;
System.out.println("a와 b의 평균은 = " + c);
c = (a + b) / 2.0f;
System.out.println("a와 b의 평균은 = " + c);
}
}
# 정수 연산의 문제점
- 첫 번째 계산에서 c = (a + b) / 2; 는 (a + b)가 정수이기 때문에 2로 나눈 결과도 정수가 된다.
- 즉, 23 / 2 = 11. 따라서 c의 값은 11이 되어버리므로, 예상한 평균값과 값이 다르다.
c = (a + b) / 2;
System.out.println("a와 b의 평균은 = " + c); // 출력: a와 b의 평균은 = 11.0
# 캐스팅을 통한 실수 연산
- 정확한 평균을 얻기 위해서는 연산 중 하나를 실수로 변환해야 하는데, 이를 캐스팅이라고 하며, 자바에서는 변수명 왼쪽에 (float)와 같이 작성
c = (float)(a + b) / 2;
System.out.println("a와 b의 평균은 = " + c); // 출력: a와 b의 평균은 = 11.5
# 또는 연산자 중 하나를 실수 리터럴로 명시할 수도 있다.
c = (a + b) / 2.0f;
System.out.println("a와 b의 평균은 = " + c); // 출력: a와 b의 평균은 = 11.5
# 결론
- 정수와 실수의 연산은 자바에서 중요한 개념으로, 정수로 나누는 경우 결과도 정수가 되기 때문에 정확한 결과를 원한다면 하나의 피연산자를 실수로 변환해야 한다. 이과정이 캐스팅!! 기억할것!
다음 게시글로 계속~!
728x90
반응형
'JAVA > JAVA 기초' 카테고리의 다른 글
JAVA : 배열 (Array) (2) | 2024.06.03 |
---|---|
JAVA : 반복문 (Loop) (2) | 2024.06.03 |
JAVA : switch 문 (0) | 2024.06.03 |
JAVA : 조건문 (0) | 2024.05.31 |
JAVA : 변수와 객체의 선언 (데이터 타입) (0) | 2024.05.31 |