FLOAT, DOUBLE 都是浮点类型, 在计算机里存储的是近似值,
DOUBLE(8BYTES)的精度比FLOAT(4BYTES)高。
精度越高,存储位越大,
看你应用的需求,选择合适的数据类型。
如果你要很高的精度(比如货币之类),可以选择DECIMAL类型
代价是存储位和速度的开销。

解决方案 »

  1.   

    FLOAT, DOUBLE 都是浮点类型, 在计算机里存储的是近似值,这个大家都知道。但我认为误差这么大是不能接受的。不知道其它数据库是否也存在这个问题。
      

  2.   

    我进行了测试:1。若FLOAT字段,有标明NUMBER SCALE时 ,比如FLOAR(12,2)
    插入8E16, 则变为800000021805137922。若不注明NUMBER SCALE, 
    插入8E16, 则变为8000000000000000
    插入1234567890123456  , 则变为 1.234567E163. 其他的数据库POSTGRESQL
    不能注明NUMBER SCALE, 效果同2一个4字节的存储位,若是整型字节,最大数为4294967296
    如是浮点数,它还要分成两部分,一部分为精度,一部分为长度.
    精度可想而知.