查询条件:JE<>JE2
JE、JE2两个字段是SUM()得到的。原字段是float类型。
出现这个情况是不是在SUM()后小数位没显示全造成的呢?因为我讲JE、JE2转换成字符串再比较就没事了。我想问一下:如何避免出现这种情况。因为不可能在每次比较数值相等或不相等的时候都要转成字符来比较吧。
KS                                                 JE                     JE2
-------------------------------------------------- ---------------------- ----------------------
124                                                1526.46                1526.46
118                                                7465.5765              7465.5765
114                                                8130.5475              8130.5475
195                                                2624.99                2624.99
109                                                6392.943               6430.019
115                                                2314.824               2322.598

解决方案 »

  1.   

    浮点数是有误差的,没办法比较的1526.46                1526.46这两个数看似相等,但内存形式是不一样的,所以<>。
      

  2.   

    那如果我的基础字段使用 numeric 还会出现这个情况吗 ?
      

  3.   

    decimal/numeric都是精确数,可以比较。
      

  4.   

    float是近似数,不准确,所以无法做到准确的比较
      

  5.   

    那就是在设计数据库时,尽量使用decimal/numeric, 而避免使用float ?
     
      

  6.   

    各有各的优势,decimal/numeric设计得不好,参与运算同样存在精度溢出截断的问题。