반응형

1번째 방법 (n * -1)


양수 -> 음수

int a = 119; 

System.out.println(a * -1 );

결과 

-119

 

음수 -> 양수

int b = -119;
		
System.out.println(b * -1 );

결과

119

 

참고

정수형이 아닌 실수형도 다 됩니다.

double c = 3.14;
		
System.out.println(c * -1 );

 

결과

-3.14

 

 

2번째 방법 Math.abs(n)


※ 주의

2번째 방법은 음수-> 양수로만 변환이 가능합니다.

 

 

음수 -> 양수

int a2 = -119; 

System.out.println(Math.abs(a2));

결과

119

 

양수를 Math.abs에 사용한다면?

int b2 = 119;

System.out.println(Math.abs(b2));

결과

119

 

참고

정수형이 아닌 실수형도 다 됩니다.

double c2 = -3.14;
		
System.out.println(Math.abs(c2));

결과

3.14

기타 (주의 할 점)

int test = -2147483648;

만약 이와 같은 값이 있다고 하면

System.out.println(test * -1 );
System.out.println(Math.abs(test));

이 두가지 방법을 사용하더라도 양수로 변하지 않습니다.

 

이유는 int형 범위가 -2147483648에서 2147483647이기 때문입니다.

양수는 2147483647까지인데 2147483648의 값을 뱉으라고 하니 뱉을 수 없는 거죠.

 

사실 당연한 건데 오류를 뱉지 않고 그냥 -2147483648 값을 뱉기 때문에 밤샘 코딩을 하신 분들은

뇌가 파업하기 때문에 멘붕 올 수도 있습니다.

 

해결

방법 1.

long test = -2147483648;

int -> long 타입으로 변경해준다.


방법 2.

int test = -2147483647;

-2147483648에서 1을 뺀 -2147483647로 변경해준다.

반응형

+ Recent posts