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

MySQL保存浮点错误

  •  1
  • INs  · 技术社区  · 7 年前

    尝试将此数字保存到任何浮点或双精度字段中 588966.68

    SQL查询将完成它的任务并保存日期并返回成功。现在检索与刚才保存的值相同的值,它将显示 588966.69

    您保存了 .68 一读你就会明白 .69 !!?!

    这怎么可能?我的字段类型是FLOAT(10,2),也尝试了带小数(12,2)和小数(12,3)的DOUBLE(12,2),尽管我只需要显式的2个小数。

    我注意到这种情况发生在超过12万人的情况下

    2 回复  |  直到 7 年前
        1
  •  0
  •   Rick James    7 年前

    FLOAT 有24个 精确性。数字 高达 128K需要17位来表示整数部分,只剩下7位用于小数部分。

    在128K和256K之间:整数为18位;分数只有6位。6位给出64个不同的值——但2位小数需要100个不同的值。精度不够。

        2
  •  0
  •   INs    7 年前

    它的工作原理是 十进制的 字段类型!