这个问题注意是10进制和2进制的问题。即使你存了2.1进入数据库,都有可能显示2.0999999999或者2.10000000001出来。
解决方法是,将这个字段对应的TField的DisplayFormat设为#.00就可以了。

解决方案 »

  1.   

    DislplayFormat实际只解决了显示的问题,在内部仍然表示为了一长串的小数,据我所知,完全没有办法解决,因为CPU就是这么处理浮点数的,有些编程书籍不是告诫我们永远不要比较两个浮点数的大小吗?就是因为这个原因。
      

  2.   

    内部我已经说了,除非你是2.5,2.25这样能够被有限位二进制小数表示数据可以准确表示,否则都会有精度损失的。另外,浮点数可以比较大小,>,<,<>,都可以用,和整数一样。只有等于比较特殊,通常方法是ABS(R1-R2) < Delta,Delta一般是一个非常小的小数,如0.0000001。