declare @tblTemp table (
A int , 
B float 

declare @A int;
declare @B int
set @A = 230
set @B = 90


insert @tblTemp (A , B ) 
select 
( convert(float,@A) / 100 * @B  ) 
, ( convert(float,@A) / 100 * @B  ) 
select * from @tblTemp

select convert(float,@A) / 100 -- 값은 2.3  
, 2.3 * 90 -- -- 2.3 값에 90 을 더하면 207.0
, convert(int, (2.3 * 90) ) -- 207.0 을 int 형으로 변경 시, 207 
, (convert(float,@A) / 100) * @B --  @B 를 곱하면 207 
, convert(int,(convert(float,@A) / 100) * @B) -- @B 를 곱하고, int 형태로 변경 시 206  
 

위와 같은 문제가 있었는데요.  이런 현상이 발생하는 이유가 너무 궁금해서 질문 드립니다. 
위 코드를 보시면, 2.3 * 90 의 결과값인 207 을 int 형으로 변경하면 아무런 이상이 없는데요. 위의 값들을 변수에 담아서 
계산을 실행 후, int 형으로 변경하면 ;; 왜 값이 변하게 되는지 이유를 도저히 모르겠습니다. 
float 타입을 DECIMAL 또는 real 타입으로 사용할 경우 206 값으로 변경되는 일 없이 모두 207 값이 나옵니다. 
도대체 내부에서 어떤 일이 벌어지기에 이런 현상이 발생하는 것인가요??