解决方案 »

  1.   

    你不是 DECIMAL 类型的吗?你不能指望人家也装个 mysql4 替你测试吧?如是确实是 DECIMAL 类型的问题(这是不应该发生的)
    你完全可以使用整型的,不就是人工点的小数点吗?
      

  2.   

    如果不更改字段类型,那么就转化类型进行比较 SELECT * FROM t WHERE (TRUNCATE(a,2)-TRUNCATE(b,2)-TRUNCATE(c,2))=0
      

  3.   

    本来 DECIMAL 类型就是为这个而设的
    你非要说他不准确,能有什么办法
      

  4.   

    数据字段值转化int类型处理 换下其他mysql函数如cast……
      

  5.   

    SELECT * FROM payment_index_tbl WHERE ( cast(amount*100 as signed )-cast(third_total_fee*100 as signed )-cast(third_service_fee*100 as signed ) )=0 
    这样好像可以     我再试一下
      

  6.   

    没有mysql 4环境,无法测试。
    你可以测试一下以下语句是返回1还是0 。
    select (0.03-0.02-0.01) = 0;
      

  7.   

    在库存中找到一份 mysql4.1的手册。他是这样描述 DECIMAL 的:6.2.1 数字类型
    MySQL 支持所有的 ANSI/ISO SQL92 数字类型。这些类型包括准确数字的数据类型(NUMERIC、DECIMAL、INTEGER 和 SMALLINT),也包括近似数字的数据类型(FLOAT、REAL和 DOUBLE PRECISION)。关键词 INT 是 INTEGER 的同义词,关键词 DEC 是 DECIMAL 的同义词。 NUMERIC 和 DECIMAL 类型被 MySQL 以同样的类型实现,这在 SQL92 标准中是允许的。他们用于保存对准确精度有重要要求的值,例如与金钱有关的数据。当以它们中的之一声明一个列时,精度和数值范围可以(通常是)被指定;例如:     salary DECIMAL(5,2)在这个例子中,5 (精度(precision)) 代表重要的十进制数字的数目,2 (数据范围(scale)) 代表在小数点后的数字位数。在这种情况下,因此,salary 列可以存储的值范围是从 -99.99 到 99.99。(实际上 MySQL 在这个列中可以存储的数值可以一直到 999.99,因为它没有存储正数的符号)。 译者注: M 与D 对DECIMAL(M, D) 取值范围的影响类型说明          取值范围(MySQL < 3.23)     取值范围(MySQL >= 3.23)
    DECIMAL(4, 1)        -9.9 到 99.9                  -999.9 到 9999.9
    DECIMAL(5, 1)       -99.9 到 999.9                -9999.9 到 99999.9
    DECIMAL(6, 1)      -999.9 到 9999.9              -99999.9 到 999999.9
    DECIMAL(6, 2)      -99.99 到 999.99              -9999.99 到 99999.99
    DECIMAL(6, 3)      -9.999 到 99.999              -999.999 到 9999.999# 在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于早期版本中的DECIMAL(M + 2, D) 的取值范围。注释结束: 在 ANSI/ISO SQL92 中,句法 DECIMAL(p) 等价于 DECIMAL(p,0)。同样的,在执行被允许决定值 p 的地方,句法 DECIMAL 等价于 DECIMAL(p,0)。MySQL 目前还不支持 DECIMAL/NUMERIC 数据类型的这些变体形式中的任一种。一般来说这并不是一个严重的问题,通过明确地控制精度和数值范围可以得到这些类型的主要功能益处。 DECIMAL 和 NUMERIC 值是作为字符串存储的,而不是作为二进制浮点数,以便保护这些值的十进制精确度。一个字符用于数值的每一位、小数点(如果 scale > 0) 和 “-” 符号(对于负值)。如果 scale 是 0,DECIMAL 和 NUMERIC 值不包含小数点或小数部分。 DECIMAL 和 NUMERIC 值的最大范围与 DOUBLE 一致,但是对于一个给定的 DECIMAL 或 NUMERIC 列,它的实际范围可制定该列时的 precision 或 scale 限制。当这样的列被赋给了小数点的位数超过 scale 所指定的值时,该将根据 scale 进行四舍五入。当一个 DECIMAL 或 NUMERIC 列被赋与一个大小超过指定(或缺省)的 precision and scale 的限止范围时,MySQL 以该列范围的端点值存储该值。