MySQL精准存储小数的方法(mysql存小数)

在MySQL中,设计表结构时会碰到不同的数据类型,其中有一种数据类型为decimal,它可以用来存储小数。在使用过程中,很多人发现用decimal精确存储小数时会出现误差,比如:

0.22得到数据库存储为:0.21999999999999999。

如果要解决这个问题,MySQL里面有较为精准的存储小数的方法,它可以将小数精确的存放在MySQL的表中。

精准的方法是使用MySQL的BINARY数据类型,首先在表设置中,指定要存储小数的字段类型:

MySQL> ALTER TABLE tableName 
MySQL> ADD columnName BINARY(4);

即可使用BINARY(4)来表示4个字节,每个字节可以存储一个小数。

然后可以用CAST函数把小数数据类型转换为BINARY类型:

MySQL> INSERT INTO tableName 
MySQL> SET columnName=CAST(0.22 As BINARY(4));

最后,使用select 命令,我们就可以看到在MySQL表中,小数0.22存储的是精确的数值0.22了,就没有误差了。

通过使用BINARY类型,我们不仅可以解决在MySQL里精准存储小数的问题,还能提升存储的效率,比如DECIMAL(8,2)有8个字节长度,而BINARY(4)只有4个字节。

因此,在MySQL里精准存储小数,可以使用BINARY数据类型,将数据类型转换为BINARY类型,然后再插入到表中,即可将小数精确的存储在MySQL表中,解决小数精度丢失的问题,同时又能节省空间。


数据运维技术 » MySQL精准存储小数的方法(mysql存小数)