为什么在mariaDB中浮动如此奇怪?

时间:2015-08-06 07:45:53

标签: sql floating-point mariadb

我对MariaDB更新有奇怪的行为。 如果FLOAT字段值:     val FLOAT NULL DEFAULT NULL,

工作查询:UPDATE tabe1 SET val=17111400 WHERE table1.pk=1 但是如果我尝试将val递减或递增1(17111399或17111401) - 更新0行。

MariaDB的官方文档说max float是: 3.402823466E+38

这是一个错误?

1 个答案:

答案 0 :(得分:1)

好的,我和同事一起想出来了(非常感谢!)。

默认情况下,mysql为数字分配~2个字节,为电源分配~2个字节(〜因为符号为1位,依此类推)。 然后,2^16 = 65536,在浮点数中E之前有最大数量。 示例中的数字17111400存储为1,7111400E7 所以,如果我们更新数字,并设置符号,逗号之后哪个序号位置数超过4 - mysql认为它是相同的数字并且UPDATE失败。