실수 자료형
package sec03.chap02;
public class Ex01 {
public static void main(String[] args) {
double a = 0.1, b = 0.2;
// ⚠️ 오차가 생김
double c = a + b;
// float의 최대값과 최소값
float fMin = -Float.MAX_VALUE;
float fMax = Float.MAX_VALUE;
// double의 최대값과 최소값
double dMin = -Double.MAX_VALUE;
double dMax = Double.MAX_VALUE;
// 최소 절대값
float fAbsMin = Float.MIN_VALUE;
double dAbsMin = Double.MIN_VALUE;
// ⭐ double이 범위도 넓고, 정밀도도 높음 확인
boolean bool1 = Float.MAX_VALUE < Double.MAX_VALUE;
boolean bool2 = Float.MIN_VALUE > Double.MIN_VALUE;
// 최대 정밀도 테스트
double dblNum = 0.123456789123456789;
float fltNum = 0.123456789123456789f;
}
}
package sec03.chap02;
public class Ex02 {
public static void main(String[] args) {
// float은 뒤에 f 또는 F를 붙여 표현
float flt1 = 3.14f;
double dbl1 = 3.14;
// ⚠️ float에는 double을 담을 수 없음
//float flt2 = dbl1;
// 반대는 가능
double dbl2 = flt1;
long lng1 = 123;
// 정수를 대입할 시 묵시적 변환
// 💡 float(4바이트)에도 long(8바이트)의 값 담을 수 있음
float flt3 = lng1;
double dbl3 = lng1;
long lng2 = Long.MAX_VALUE;
// ⭐ 큰 수(정확히 표현가능한 한도를 넘어서는)일 경우
// 가능한 최대 정확도로
float flt4 = lng2;
double dbl4 = lng2;
}
}
package sec03.chap02;
public class Ex03 {
public static void main(String[] args) {
float flt01 = 4.124f;
float flt02 = 4.125f;
double dbl01 = 3.5;
// float끼리의 연산은 float 반환
float flt03 = flt01 + flt02;
// float과 double의 연산은 double 반환
//float flt04 = flt01 + dbl01; // ⚠️ 불가
// 부동소수점 방식상 오차 자주 있음
double dbl02 = 0.2 + 0.3f;
double dbl03 = 0.2f * 0.7f;
double dbl04 = 0.4 - 0.3;
double dbl05 = 0.9f / 0.3;
double dbl06 = 0.9 % 0.6;
}
}
Last updated