728x90
정수 연산으로 계산하기
산술 연산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 않는 것이 좋다. 아래의 코드 예제를 살펴보자.
사과 1개를 0.1 단위의 10조각으로 보고, 그 중 7조각(0.7)을 뺀 3조각(0.3)을 result 변수에 저장하는 코드이다.
package ch03.sec04;
public class AccuracyExample1 {
public static void main(String[] args) {
//산술 연산을 실수 타입으로 한 예시
int apple = 1;
double pieceUnit = 0.1;
int number = 7;
double result = apple - number * pieceUnit;
System.out.println("사과 1개에서 남은 양: " + result);
}
}
//출력 결과: 0.2999999999999993
출력을 하게 된다면 result 변수의 값은 정확히 0.3이 되지 않는다. 이런 현상은 부동 소수점 방식을 사용하는 실수 타입에서 흔히 일어난다. 그렇기 때문에 이러한 현상을 방지하기 위하여 아래 예시 코드처럼 계산하는 것이 좋다.
package ch03.sec04;
public class AccuracyExample2 {
public static void main(String[] args) {
//산술 연산을 정수 타입으로 한 예시
int apple = 1;
int totalPieces = apple * 10;
int number = 7;
int result = totalPieces - number;
System.out.println("10조각에서 남은 조각: " + result);
System.out.println("사과 1개에서 남은 양: " + result/10.0);
}
}
/*
출력 결과
10조각에서 남은 조각: 3
사과 1개에서 남은 양: 0.3
*/
728x90
'Language > Java' 카테고리의 다른 글
[Java] 연산자(비교 연산자, 논리 연산자, 비트 논리 연산자) (0) | 2022.10.19 |
---|---|
[Java] NaN과 Infinity 처리 (0) | 2022.10.14 |
[Java] 오버플로우와 언더플로우 (0) | 2022.10.07 |
[Java] 부호/증감/산술 연산자 (0) | 2022.10.06 |
[Java] 키보드 입력 데이터를 변수에 저장 (0) | 2022.10.04 |