[Java] 숫자 양수< - >음수 변환 총 정리
2020. 4. 5. 15:05
반응형
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로 변경해준다.
반응형
'java' 카테고리의 다른 글
[Java] while(variable-- > 0) 개념 및 문법 정리 (1) | 2020.05.06 |
---|---|
[Java] MD5,SHA-256,AES-128,3DES (4가지 암호화) 문법 총 정리 (0) | 2020.04.30 |
[Java] split 특수문자 버그 해결,배열 원소 추출,숫자 비교 총 정리 (0) | 2020.02.07 |
[Java] LocalDate,LocalTime,LocalDateTime 총 정리 (10) | 2019.11.13 |
[Java] Error(에러)와 Exception(예외) 그리고 자주 보이는 Exception (0) | 2019.11.06 |