SQL计算的奇怪现象,哪位高手能帮小弟我分析一下原因

SQL计算的奇怪现象,谁能帮我分析一下原因?
下面语句是从mytable取出两列数T和Q,并求它们积S:
select     T   ,Q   ,(T*Q)   as   S     from   mytable

结果是:
      T                     Q                 S
.479700           58.0 27.822600000000001
.644100       1020.0 656.98199999999997


但我执行下面的语句结果却与上面的不一样:
select     0.479700     as   T   ,58.0   as   Q   ,(0.479700   *58.0)   as   S  

结果是:
        T               Q                       S
.479700         58.0 27.8226000


select     0.644100     as   T   ,1020.0   as   Q   ,(0.644100*1020.0)   as   S    
结果是:

        T               Q                       S
.644100     1020.0   656.9820000


为什么相同的数相乘,结果会不一样呢?

------解决方案--------------------
没定义类型的小数会默认为float,而你数据表中的类型不是这样,所以结果不一样