I.T/Programming
Float to Int, Double to Int 형변환 때 -1 되는 현상
Rainfly
2013. 9. 30. 14:50
반응형
아놔.. 순간... 멍때렸다... 모니터앞에서..
float test = "1.9";
int nTest = (int) (test * 10);
nTest 기대치 : 19
nTest 결과값 : 18
int nTest = (int) (test * 10);
nTest 기대치 : 19
nTest 결과값 : 18
nTest의 갑은 19가 나와야 정상이지만, 18이 나온다... 씨팔...이 나옴.ㅇ_ㅇ
근데 조금 해석에 더 가까이 다가가보니 이런 결과나 나옴..
nTest = (int) (flaot) (test * 10)
nTest 기대치 : 19
nTest 결과밧 : 19 (레알 나와버렸음)
nTest 기대치 : 19
nTest 결과밧 : 19 (레알 나와버렸음)
왜 그런가 봤더니.. 비교를 구지 하자면,
nTest(18) = (int)(flaot * 10);
nTest(18) = (int)(double)(flaot * 10);
nTest(19) = (int)(float)(flaot * 10);
nTest(18) = (int)(double)(flaot * 10);
nTest(19) = (int)(float)(flaot * 10);
(test * 10) = (flaot * 10) = double로 자동형변환이 되었고
double To int 에서는 -1되는 현상이 있다고 함....
현상의 이유는 많은 이들이 모른데... 그냥 +0.5를 해서 형변환시키면 된다고 함.. ㅠㅠ
오늘도 여튼 삽질 ... 했음
반응형