티스토리 뷰
반응형
제한할 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)
반응형
'Java' 카테고리의 다른 글
[Java] List 중복 제거 (0) | 2021.06.15 |
---|---|
[JavaScript] $.grep()을 이용한 배열 필터링 (2) | 2021.05.04 |
[Java] PropertyPlaceholderConfigurer로 properties 파일 읽어오기 (0) | 2021.04.12 |
[Java] List 객체에 String 배열 삽입 (2) | 2021.04.08 |
[Java] StringBuilder str = new StringBuilder(); (1) | 2021.03.10 |