1.형식화된 출력 - printf()
println() 메소드의 단점 : 출력형식 지정불가
1)실수의 자리수 조절불가 - 소수점 n자리만 출력하려면?
Systme.out.println(10.0/3); // 3.33333333…
정수 나누기 정수는 값이 소수점이 나와야하지만 정수로 출력함
둘 중 하나를 실수로 바꿔야 소수점까지 제대로 출력됨
3.33333333...값을 제대로 얻으려면 10/3이 아닌 10.0/3을 해야한다는 것만 일단 기억해두자
2)10진수로만 출력된다 - 8진수, 16진수로 출력할려면?
System.out.println(0x1A); // 26(10진수)
printf()로 출력형식 지정가능
System.out.printf("%.2f", 10.0/3); // 3.33
System.out.printf("%d", 0x1A); // 26 // %d : 10진수
System.out.printf("%x", 0x1A); // 1A // %X : 16진수
2.printf() 메소드의 지시자(1/3)
<자주쓰는 지시자>
*이외에 다른 지시자들을 알고싶다면, JavaAPI문서 - Formatter 검색
2.printf() 메소드의 지시자(2/3)
1)정수를 10진수, 8진수, 16진수로 출력
System.out.printf("%d", 15); // 15 10진수(decimal number)
System.out.printf("%o", 15); // 17 8진수(octal number) - 일칠이라고 읽는다.
8진수에서는 10이 1이 아니라 8이기 때문
System.out.printf("%x", 15); // f 16진수(hexadecimal)
System.out.printf("%x", 15); // f 16진수(hexadecimal)
System.out.printf("%s", Integer.toBinaryString(15)); // 1111 2진수 - 10진수15가 2진수 1111
숫자15를 위의 메소드에 넣으면 '문자열1111'을 얻는다
그래서 %s를 사용하는 것
2진수로 출력하는 지시자없음
정수를 2진수로 변환해주는 toBinaryString() 메소드를 사용해야함
2) 8진수와 16진수에 접두사 붙이기
8진수 접두사 : 0
16진수 접두사 : 0x
값이 출력될 때는 접두사가 안붙음. 접두사까지 출력하고 싶다면 지시자 앞에 #추가
System.out.printf("%#o", 15); // 017
System.out.printf("%#x", 15); // 0xf
System.out.printf("%#x", 15); // 0XF // 지시자를 대문자로 쓰면, 접두사X와 F도 같이 대문자로 출력됨
3)실수 출력을 위한 지시자 %f - 지수형식(%e), 실수 출력의 간략한 형식(%g)
float f = 123.4567890f;
System.out.printf("%f", f); // 123.456787 소수점아래6자리
마지막숫자9가 아니고 7인이유는 float의 정밀도가 7자리까지만 정확하기 때문
System.out.printf("%e", f); // 1.234568e+02 지수형식
같은 수인데 f출력은 456'7'이고 e는 456'8'
실제 저장된 값은 같으나 마지막값을 반올림하여 보여주기때문
System.out.printf("%g", 123.456789); // 123.457 // 소수점포함 7자리로 간략히 보여줌
마지막수가 6이어야하나 g도 반올림해서 7로 출력한 것. 지시자f처럼 출력
System.out.printf("%g", 0.00000001); // 1.00000e-8
실수형태는 %f를 많이쓰면 되고, 숫자에 0이 많이 들어가면 %e를 사용하면 된다
실습
2.printf() 메소드의 지시자(3/3)
System.out.printf("[%5d]%n", 10); // [공백공백공백10] 총 다섯자리
System.out.printf("[%-5d]%n", 10); // [10공백공백공백] -의 왼쪽정렬
System.outprintf("[%05d]%n", 10); // [00010] 공백자리를 대체하는 문자 0
소수점 포함 14자리. 소수점도 하나의 데이로써 메모리 공간을 차지하기 때문
지정된 자릿수보다 출력할 값으 자릿수가 적다면, 소수점 아래는 빈자리를 0으로 채우고 소수점 위는 공백으로 채움
'JAVA > 자바의 정석 기초편(2020)' 카테고리의 다른 글
[자바의 정석 - 기초편] ch2-15,16 정수형의 오버플로우 (0) | 2022.02.19 |
---|---|
[자바의 정석 - 기초편] ch2-14 화면으로부터 입력받기 (0) | 2022.02.19 |
[자바의 정석 - 기초편] ch2-10 기본형과 참조형 (0) | 2021.12.22 |
[자바의 정석 - 기초편] ch2-9 두 변수 바꾸기 (0) | 2021.12.22 |
[자바의 정석 - 기초편] ch2-7,8 문자, 문자열 리터럴, 문자열 결합 (0) | 2021.12.22 |