목록이것이 자바다/03 연산자 (9)
충분히 쌓여가는
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(result); } } 0.29999999999999993 result의 값이 정확히 0.3이 되지 않는다 -> 부동 소수점 방식을 사용하는 실수 타입에서 흔히 일어난다 정확한 계산이 필요하다면 정수 연산으로 변경해서 사용하는 것이 좋다 package ch03.sec04; public class AccuracyExample2 { publ..
오버플로우 overflow 타입이 허용하는 최대값을 벗어나는 것 언더플로우 underflow 타입이 허용하는 최소값을 벗어나는 것 정수 타입 연산에서 오버플로우 또는 언더플로우가 발생되면 실행 에러가 발생할 것 같지만, 해당 정수 타입의 최소값 또는 최대값으로 되돌아간다 byte 타입일 경우 최대값 127에서 1을 더하면 128이 되어 최소값인 -128이 된다 byte value = 127; value++; System.out.println(value); // -128 -128에서 1을 빼면 최대값인 127이 된다 byte value = -128; value--; System.out.println(); short, int long 타입은 값의 범위만 다를 뿐 오버플로우 및 언더플로우가 발생했을 때 최소값..
- 피연산자가 정수 타입(byte, short, char, int)이면 연산의 결과는 Int 타입 - 피연산자가 정수 타입이고 그 중 하나가 long 타입이면 연산의 결과는 long 타입 - 피연산자 중 하나가 실수 타입이면 연산의 결과는 실수 타입 package ch03.sec02; public class ArithmeticOperatorExample { public static void main(String[] args) { byte v1 = 10; byte v2 = 4; int v3 = 5; long v4 = 10L; int result1 = v1+v2; // 모든 피연산자는 int 타입으로 자동 변환 후 연산 System.out.println("result1: " + result1); long r..