JAVA_06_형변환, 반올림

charl hi·2021년 8월 5일
0

JAVA

목록 보기
6/53

✨✨숫자 ⇄ 문자

숫자 → 문자

(char)(숫자 + '0')

문자 → 숫자

'문자' - '0'



anytype → 문자열

1) + ""

어떤것이든 + ""

2) valueOf()

String.valueOf(변수나 리터럴)

int i = 10;
String s1 = i + "";	// s1 = "10"
String s2 = String.valueOf(i);	// s2 = "10"

문자열 → 숫자

1) parseInt() - 예전방법

Integer.parseInt("문자열"); : 정수

Double.parseDouble("문자열"); : 실수

... 각 리퍼클래스마다 존재한다.

2) valueOf() - 요즘방법

Integer.valueOf("문자열"); : 정수

  • 원래 반환타입이 해당 래퍼클래스

  • BUT 오토박싱으로 인해 int로 해도 자동으로 받아준다.

int i = Integer.parseInt("100");	// i = 100

int i2 = Integer.valueOf("100");	// i2 = 100

Integer i3 = Integer.valueOf("100");	// i3 = 100

문자열 → 문자

"문자열".charAt(0);



public class Ex2_12 {

	public static void main(String[] args) {
		// 형변환 
		System.out.println("3".charAt(0));	//문자3
		//문자열 -> 문자
		
		System.out.println(Integer.parseInt("3") + 1);	//숫자4
		System.out.println(Double.parseDouble("3.14"));//숫자3.14
		//문자열 -> 숫자
		
		System.out.println(3 + '0');	//3+48
		System.out.println('3' + '0');	//51+48
		System.out.println((char)(3 + '0'));	//51을 문자로
		//숫자 -> 문자
		
		System.out.println('3' - '0');	//51-48	//숫자3
		//문자 -> 숫자
		
		System.out.println('3' + "3");		//문자열33
		System.out.println("3" + 3);		//문자열33
		System.out.println("3" + "3");		//문자열33
		//-> 문자열

	}

}

3
4
3.14
51
99
3
3
33
33
33


형변환 연산자 (type)

Math

1. 소수점 아래 버림 -> 정수로

1) (int) 형변환

  • int a = (int) 0.5;
    이런 식으로 (int) 를 붙이면 소수점 아래는 버리고 정수만 남게 된다.
    => 0

2) Math.floor(숫자)

  • Math.floor(숫자)

2. 소수점 올림 -> 정수로

Math.ceil(숫자)

  • Math.ceil(숫자)

public class number {

	public static void main(String[] args) {
		//Operator 연산자
		System.out.println(6+2); // 8
		System.out.println(6-2); // 4
		System.out.println(6*2); // 12
		System.out.println(6/2); // 3
		
		System.out.println(Math.PI); // 3.141592653589793
		System.out.println(Math.floor(Math.PI)); // 소수점 버림 3.0
		System.out.println(Math.ceil(Math.PI)); // 소수점 올림 4.0

	}

}


3. 소수 첫째 자리에서 반올림 -> 정수로

1) (int) (변수 + 0.5)

  • ✨실수 값을 반올림 하기
    : 변수에 0.5를 더한다 -> 정수형으로 변환
public class Main {

	
	public static void main(String[] args) {
	
		double A = 0.4;
		int a = (int) (A + 0.5);  // 0.9
		System.out.println(a);  // 0
		
		double B = 0.5;
		int b = (int) (B + 0.5);  // 1.0
		System.out.println(b);  // 1
		
		double C = 0.9;
		int c = (int) (C + 0.5);  // 1.4
		System.out.println(c);  // 1
       }
}		

2) Math.round(숫자)

  • long 변수명a = Math.round(숫자)
  • ✨✨long으로 받아야 한다.

4. ✨✨👀 소수 n번째 자리에서 반올림

  • Math.round(숫자 * 10의 n-1제곱) / 10의 n-1제곱.0

public class Ex3_11 {

	public static void main(String[] args) {
		
		double pi = 3.141592;
		
		//소수 첫째자리에서 반올림하기->정수, 3
		long ollimPi = Math.round(pi);	//중요!! long으로 받기
		System.out.println(ollimPi);
		
		//4번째 자리에서 반올림하기, 3.142
		double shortPi = Math.round(pi * 1000) / 1000.0;
		double shortPi2 = ((int)(pi * 1000 + 0.5)) / 1000.0;
		//중요!! 1000.0으로 타입이 맞춰짐
		System.out.println(shortPi);
		System.out.println(shortPi2);
		
		//4번째 자리까지, 5번째부터 버림, 3.141
		double flPi = Math.floor(pi * 1000) / 1000.0;
		System.out.println(flPi);
		//형변환(int)해도 된다.
		
		//4번째 자리까지, 5번째에서 올림, 3.142
		double cePi = Math.ceil(pi * 1000) / 1000.0;
		System.out.println(cePi);
	}

}

3
3.142
3.142
3.141
3.142
  • 👀 1000.0을 한 이유?
(int)3142 / (double)1000.0

-> (double)3142.0 / (double)1000.0

-> (double)3.142

-> 형변환을 해서 타입을 맞춰주기 위해 -> 그래야 내가 원하는 실수가 나옴

-> 두 항 중 하나만 형변환해도 된다.


  • 👀 1000.0이 아닌 1000으로 나눈다면??
(int)3142 / (int)1000 

-> (int)3

-> 이기 때문에 안된다!!




Ref

0개의 댓글

관련 채용 정보