본문 바로가기

Dev::DotNet/C#

실수를 정수로 형변환 할때


지극히 기본적이면서 당연한 이야기지만 

내가 예전에 했던 커다란 실수에 대해서 적어볼까 한다.


C# 에서는 Convert  라는 각종 기본 자료형의 값을 형변환하는 클래스를 제공하고 있다.


또한 예전처럼 b = (int)a 이런 식으로 형변환자를 통해서도 가능하다.


예전에 Zoom Factor 의 변경에 의한 Child 의 Location 과 Size 를 재조정하기 위해 

약간의 계산식을 만드는데 ZoomFactor 는 실수(float, double) 였고 Location 과 Size 는 정수(int...) 였다.


아무 생각없이 실수를 정수로 형변환하면서 위의 2가지 방법을 혼용해서 사용하였고

결론만 이야기 하면 내가 원하는 답이 나오지 않았다.


(int)1.5 를 하면 소수점 아래자리는 소실되어 1 이 나온다....뭐 아주 당연한거다.

Convert.ToInt32(1.5) 를 하면 반올림이 되서 2 가 나온다.

이 차이는 결과에 엄청난 차이를 발생시키기에 충분하다.


두가지 방법이 같다고는 생각안했지만 다르다고도 생각을 안하고 있었다.

그냥 아무 생각이 없었던 것 같다.