[Java의 정석] Chapter 02 변수 예제 #3
Java의 정석 70page
실수형 float, double 정밀도 관련
예제 2-10 FloatEx1
(1) float 타입 변수 f에 9.12345678901234567890f를 초기화/선언
(2) float 타입 변수 f2에 1.2345678901234567890f를 초기화/선언
(3) double 타입 변수 d에 9.12345678901234567890d를 초기화/선언
(4) printf()로 1~3 변수에 저장된 값 콘솔에서 확인
[실행결과]
123456789012345678901234
f : 9.123457
f : 9.12345695495605500000
f2 : 1.23456788063049320000
d : 9.12345678901234600000
▼ 나의 풀이
public class FloatEx1 {
public static void main(String[] args) {
float f = 9.12345678901234567890f;
float f2 = 1.2345678901234567890f;
double d = 9.12345678901234567890d;
System.out.printf(" 123456789012345678901234%n");
System.out.printf("f : %f%n", f);
System.out.printf("f : %24.20f%n", f);
System.out.printf("f2 : %24.20f%n", f2);
System.out.printf("d : %24.20f%n", d);
}
}
Java의 정석 73page
실수형 float 타입의 저장 관련
예제 2-11 FloatToBinEx
(1) float 타입 변수 f에 9.1234567f를 초기화/선언
(2) int 타입 변수 i에 변수 f의 값을 int타입으로 해석한 값을 초기화/선언
(3) printf()로 f와 i 변수에 저장된 값 콘솔에서 확인
[실행결과]
9.123457
4111f9ae
▼ 나의 풀이
- Float.floatToIntBits() 답안 참조
public class FloatToBinEx {
public static void main(String args[]) {
float f = -9.1234567f;
int i = Float.floatToIntBits(f);
System.out.printf("%f%n", f);
System.out.printf("%x%n", i);
}
}
Java의 정석 75page
형변환 관련
예제 2-12 CastingEx1
(1) double 타입 변수 d에 85.4를 초기화/선언
(2) int 타입 변수 score에 변수 d에 저장된 값을 int 타입으로 형변환하여 초기화/선언
(3) println()으로 변수 d와 score에 저장된 값 콘솔에서 확인
[실행결과]
d = 85.4
score = 85
▼ 나의 풀이
public class CastingEx1 {
public static void main(String[] args) {
double d = 85.4;
int score = (int)d;
System.out.println(" d = "+d);
System.out.println("score = "+score);
}
}
Java의 정석 76page
형변환 관련
예제 2-13 CastingEx2
(1) int 타입 변수 i에 10을 초기화/선언
(2) byte 타입 변수 b에 변수 i에 저장된 값을 byte 타입으로 형변환하여 초기화/선언
(3) printf()로 i와 b 변수에 저장된 값 콘솔에서 확인
(4) 변수 i에 300 할당
(5) 변수 b에 변수 i에 저장된 값을 byte 타입으로 형변환하여 할당
(6) printf()로 i와 b 변수에 저장된 값 콘솔에서 확인
(7) 변수 b에 10 할당
(8) 변수 i에 변수 b에 저장된 값을 int 타입으로 형변환하여 할당
(9) printf()로 i와 b 변수에 저장된 값 콘솔에서 확인
(10) 변수 b에 -2 할당
(11) 변수 i에 변수 b에 저장된 값을 int 타입으로 형변환하여 할당
(12) printf()로 i와 b 변수에 저장된 값 콘솔에서 확인
(13) println()으로 변수 i에 저장된 값을 2진 정수로 변환한 문자열을 콘솔에서 확인
[실행결과]
[int -> byte] i=10 -> b=10
[int -> byte] i=300 -> b=44
[byte -> int] b=10 -> i=10
[byte -> int] b=-2 -> i=-2
i=11111111111111111111111111111110
▼ 나의 풀이
- Integer.toBinaryString() 답안 참고
public class CastingEx2 {
public static void main(String[] args) {
int i = 10;
byte b = (byte)i;
System.out.printf("[int -> byte] i=%d -> b=%d%n", i, b);
i = 300;
b = (byte)i;
System.out.printf("[int -> byte] i=%d -> b=%d%n", i, b);
b = 10;
i = (int)b;
System.out.printf("[byte -> int] b=%d -> i=%d%n", b, i);
b = -2;
i = (int)b;
System.out.printf("[byte -> int] b=%d -> i=%d%n", b, i);
System.out.println("i="+Integer.toBinaryString(i));
}
}
Java의 정석 78page
형변환 관련
예제 2-14 CastingEx3
(1) float 타입 변수 f에 9.1234567f를 초기화/선언
(2) double 타입 변수 d에 9.1234567을 초기화/선언
(3) double 타입 변수 d2에 변수 f에 저장된 값을 double 타입으로 형변환하여 초기화/선언
(4) printf()로 1~3 변수에 저장된 값 콘솔에서 확인
[실행결과]
f =9.123456954956055000
d =9.123456700000000000
d2=9.123456954956055000
▼ 나의 풀이
public class CastingEx3 {
public static void main(String[] args) {
float f = 9.1234567f;
double d = 9.1234567;
double d2 = (double)f;
System.out.printf("f =%20.18f\n", f);
System.out.printf("d =%20.18f\n", d);
System.out.printf("d2=%20.18f\n", d2);
}
}
Java의 정석 81page
정수형과 실수형 간의 형변환 관련
예제 2-15 CastingEx4
(1) int 타입 변수 i에 91234567을 초기화/선언
(2) float 타입 변수 f에, 변수 i에 저장된 값을 float 타입으로 형변환하여 초기화/선언
(3) int 타입 변수 i2에, 변수 f에 저장된 값을 int 타입으로 형변환하여 초기화/선언
(4) double 타입 변수 d에, 변수 i에 저장된 값을 double 타입으로 형변환하여 초기화/선언
(5) int 타입 변수 i3에, 변수 d에 저장된 값을 int 타입으로 형변환하여 초기화/선언
(6) float 타입 변수 f2에, 1.666f을 초기화/선언
(7) int 타입 변수 i4에, 변수 f2에 저장된 값을 int 타입으로 형변환하여 초기화/선언
(8) printf()로 1~7 변수에 저장된 값 콘솔에서 확인
[실행결과]
i = 91234567
f = 91234568.000000, i2 = 91234568
d = 91234567.000000, i3 = 91234567
(int)1.666000 = 1
▼ 나의 풀이
public class CastingEx4 {
public static void main(String[] args) {
int i = 91234567;
float f = (float)i;
int i2 = (int)f;
double d = (double)i;
int i3 = (int)d;
float f2 = 1.666f;
int i4 = (int)f2;
System.out.printf("i = %d\n", i);
System.out.printf("f = %f, i2 = %d\n", f, i2);
System.out.printf("d = %f, i3 = %d\n", d, i3);
System.out.printf("(int)%f = %d\n", f2, i4);
}
}
★ 암기 부족한 부분
- printf()의 지시자 %f는 기본적으로 소수점 이하 6자리까지만 출력
- 실수형 float 타입 정밀도 7자리, double 타입 정밀도 15자리
- float → int : Float.floatToIntBits()
- int → binary : Integer.toBinaryString()