代码之家  ›  专栏  ›  技术社区  ›  bcmcfc

MySQL大于或等于运算符正在忽略其或等于义务

  •  8
  • bcmcfc  · 技术社区  · 14 年前

    如果连续的价格是 38.03

    WHERE price >= '38.02' AND price <= '38.03' (本工程)

    WHERE price >= '20' AND price <= '100'

    WHERE price >= '38.03' AND price <= '38.03'

    WHERE price >= '38.03' AND price <= '100'

    WHERE price >= '38.03'

    WHERE price <= '38.03' (本工程)

    价格以浮动形式存储在数据库中。

    所以基本上, <= >= 不是。这有什么原因吗?

    2 回复  |  直到 14 年前
        1
  •  24
  •   Alex    14 年前

    请记住 float 12 作为浮子,你将得到 11.99999999999998

    '38.03' 可以转换为decimal,或其他更精确的数据类型(取决于RDBMS,我在这里是通用的),它将不同于float值。

    浮点为32位,精度低。Double工作得更好,是64位数据类型。在某些系统中,十进制数据类型是128位的数字数据类型,用于存储非常精确的数值,通常用于表示货币。

    并且,跳过使用 = 操作员,of 浮动 价值观。浮点数用于近似和快速计算,只有与范围进行比较才可用于检查范围的值 . 这基本上适用于每一个系统。

        2
  •  -1
  •   Johan    14 年前

    使用引号(')时,变量将被视为字符串。我想那是你的问题。