닷넷에서는 몇 가지 형변환 방법이 있는데 그중 괄호로 사용하는 캐스팅 방법은 다른 언어에서도 사용하는 방법이고 이전부터 사용하던 방법입니다.
예>
예>
object oTemp = new object();
oTemp = 3.0;
dTest = (double)oTemp;
그런데 형 변환을 하다가 이상한 에러를 발견하였습니다.
'object'형을 'float'로 캐스팅을 하니 에러가 빵~
object oTemp = new object();
oTemp = 3.0;
double dTest = 1.0;
float fTest = 1.0f;
dTest = (double)oTemp;
fTest = (float)oTemp;
흠?
오류의 말은 써있는 데로
"형변환이 안 되니 확인해 봐라"
입니다.
원래 'double'형은 'float'형으로 변환에 이상이 없다는 것을 생각해보면 이상하다고 할 수 있죠.
(역으로 변환할 때는 오류 생깁니다.)
그래서 해당 자료를 찾아보니 버그라는 소리도 있고....
잉?
간단하게 해결하는 방법은 'double'형으로 바꾼 후 'float'로 바꾸면 됩니다.
object oTemp = new object();
oTemp = 3.0;
double dTest = 1.0;
float fTest = 1.0f;
dTest = (double)oTemp;
fTest = (float)dTest;
//fTest = (float)oTemp;
이렇게 말이죠.
물론
fTest = (float) Convert.ToDouble( oTemp);
fTest = (float)(double)oTemp;
이렇게 써도 됩니다.
이것도 많이 쓰는 것일 텐데 왜 .NET에 구현돼있지 않은 걸까요?