作者简介:大家好,我是码炫码哥,前中兴通讯、美团架构师,现任某互联网公司CTO,兼职码炫课堂主讲源码系列专题
代表作:《jdk源码&多线程&高并发》,《深入tomcat源码解析》,《深入netty源码解析》,《深入dubbo源码解析》,《深入springboot源码解析》,《深入spring源码解析》,《深入redis源码解析》等
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬
在 MySQL 中,有一条忠告,就是 「 不要使用浮点类型,不要使用浮点类型,不要使用浮点类型 」,如果真要使用,那么也请使用 DECIMAL 类型。
为什么呢 ?
因为浮点类型的值是 「 近似 」精度,而且,因为它们都有使用 4 或 8 字节存储,而会带来另一些往往想不到的雪上加霜的问题。
近似值的浮点类型
浮点数有时会引起混淆,因为它们存储的是近似值而不是精确值,这就可能直接导致了在 SQL 语句中写入的浮点值可能与内部存储的值不同。
另一方面,在比较操作中,尤其是想等于操作 ( = ),尝试将浮点值视精确值可能会导致问题。
更惨的是,它们还受平台或实现依赖性的影响。
因为 FLOAT 和 DOUBLE 数据类型受这些问题的影响,所以, MySQL 推出了更好的数据类型 DECIMAL。
对于 DECIMAL 列,MySQL 执行的是精度为 65 位十进制数的操作,这可以解决最常见的不准确问题。
下面的范例,使用 DOUBLE 演示浮点运算是如何受浮点错误的影响
mysql> DROP TABLE IF EXISTS t1;
mysql> CREATE TABLE t1 (i

最低0.47元/天 解锁文章
628

被折叠的 条评论
为什么被折叠?



