티스토리 뷰

반응형

 

제한할 Bandwidth를 주입하는데 GB로 입력되어 있는 값을

Byte 단위로 변환해서 넣어줘야 하는 일이 생겼다.

int bandwidth = 2;

StringBuilder builder = new StringBuilder();
builder.append("BWLIMIT=").append(bandwidth * 1073741824);

넣고나니 생각하지 못한 마이너스 값이 들어가 있다.

-2147483648

 

 

 

<변수>에 연산 값을 넣어주는 게 아니고 바로 연산만 하면 되니까 생각하고 가장 기초적인 걸 간과했다.

이런 실수를 하다니;

 

 

 

변수 따위랑 상관없이, <연산> 시에는 자료형 변환에 주의하여야 한다. 

bandwidth는 int 형인데 long 형과의 연산 결과값이 int의 크기를 벗어났다.

당연히 오버플로우가 발생한다.

 

 

 

문제를 해결하는 방법은 당연하게도 자료형 변환을 해주면 된다.

int bandwidth = 2;

StringBuilder builder = new StringBuilder();
builder.append("BWLIMIT=").append((long) bandwidth * 1073741824);

그럼 제대로된 값이 들어간다.

2147483648

(참고 : okky.kr/article/429809)

 

 

 

 

 

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함