넘길 때 소수점 이하로 표기한다.Google 리더보드 social.report Score에서 시간 기록을

 처음에는 채운 시간을 몇 점 몇 초 단위로 계산해 리더보드에게 주고 싶었지만 계속 0.004초 식으로 리더보드에 올랐다.

처음에는 내가 형 변환을 잘못한 줄 알았어. 그러나 그럴 수는 없었다.

report Score에는 long 형태로 값을 넘겨주어야 하기 때문에 float형의 경우 소수점 아래 부분은 버려진다. –

여기서 의문이 들긴 했지만 왜 리더보드에는 소수점 아래 네 자리까지 허용했는지였다.

자신이 뭔가 놓치고 있는 게 아닌가 싶어 책까지 다시 읽으며 고민했는데 역시 책에는 이에 대한 대답이 없었고 카페에서 커피를 마시며 멍하니 있다가 갑자기 무슨 이유에서인지 아이디어가 떠올라 저녁으로 족발을 먹고 집에 와서 한번 자신의 생각을 검증해 보니 역시 맞더라.

왜냐하면 long 모양으로 초과한 정수가 소수점 아래부터 들어가기 때문이다.

float형을 그대로 long으로 변환해 버리면, 정수 부분만 남고 나머지는 날아간다. 하지만 만약에 개발자가 구글 리더 보드를 소수점 이하 자리 2로 설정해 놓는다면

리더보드 정수부분에 내가 long으로 넘겨본 정수부분이 들어가는게 아니라 소수점 이하 부분부터 들어간다.

예를 들면

float 4.15을 넘으면 long으로 형 변환하면서 4가 남고

리더보드에는 0.04로 기록된다.따라서 만약 4.15초를 표시하고 싶으면 100을 곱해서 넘으면 된다.

float a = 4 . 15 ; a = a * 100 ;

social.report Score (a, 이러쿵저러쿵) ;

이렇게 넘겨버리면

임의의 숫자로 표시할 수 있다.

소수점 세 자리라면 당연히 1000을 곱하고 네 자리라면 10000을 곱하면 될 것이다.아마 그렇겠지?

이거 때문에 되게 헷갈렸어구글링 안해봐서 내가 생각한 답이 틀렸을지도 몰라.그러나 그렇지 않을 것이다.