JAVA/JAVA 기초

JAVA : 연산하기 (자주 발생하는 에러 상황)

신강희 2024. 5. 31. 17:44
728x90

< 연산하기 (자주 발생하는 에러 상황) >

 

# 자바에서 정수와 실수의 연산에 대해 알아보고, 실수로 인해 발생할 수 있는 버그를 예방하는 방법에 대하여 정리

- 정수와 실수의 연산 차이를 이해하고, 캐스팅을 활용하는 방법

 

# 자바의 데이터 타입
- 종류가많음 (옛날 언어)
- 실수형은 대부분 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

 

# 결론

- 정수와 실수의 연산은 자바에서 중요한 개념으로, 정수로 나누는 경우 결과도 정수가 되기 때문에 정확한 결과를 원한다면 하나의 피연산자를 실수로 변환해야 한다. 이과정이 캐스팅!! 기억할것!

 

다음 게시글로 계속~!

 

반응형

'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