안드로이드 개발 질문/답변
(글 수 45,052)
개인 프로젝트를 하나 구현하다 한가지 약간의 문제가 생겨 이렇게 글 올립니다
다름이 아니라 JAVA 데이터 타입에 long은 64비트(8바이트) 정수 타입으로 정의되어 있는데요..
안드로이드에서 실제 연산에 long타입의 변수를 이용해서 값을 넣어도 32비트를 못넘기네요;;;
일단 수식에 넣을 상수 값이야 32비트 이상의 값을 넣을 수 없을거라 이해는 해도
최종 연산값을 long 타입 변수에 대입하면 결과값은 올바르게 저장될 줄 알았는데
그래도 출력해보면 올바른 값이 나오지 않습니다..아무래도 안드로이드상에서 32비트 범위를 못벗어나는듯 합니다
SQLite3 데이터베이스에서는 long 타입의 64비트 정수값을 저장할 수 있고 그 값을 제대로 불러 올 수 있는데
이때도 값을 출력해보면 제대로 값이 나오지 않아서 혹시나 해서 여러 자릿수로 나눠서 출력해보니 올바른 값이 나오더군요
그렇다면 long데이터 타입에 값이 저장은 된다는 뜻일텐데요..(DB에서 64비트 정수 값을 받아올 수 있는걸 보면)
코드 상에서나 어플 상에서 값이 32비트 한도를 넘어가면 제대로 된 값이 저장도 안되고 출력도 안되니 답답하네요
안드로이드 상에서의 데이터 타입 long의 정체는 대체 뭔가요 ㅜㅜ
답변 부탁드립니다




구조상으로는 64가 되는게 정상인 것 같습니다. 다른 부분을 한번 확인해보시는 것도 괜찮아 보입니다.
http://developer.android.com/reference/java/lang/Long.html
public static final long MAX_VALUE
Constant for the maximum
longvalue, 263-1.public static final long MIN_VALUE
Constant for the minimum
longvalue, -263.public static final int SIZE
Constant for the number of bits needed to represent a
longin two's complement form.