MySQL 允许使用非标准语法(其他数据库未必支持,因此如果设计到
数据迁移,则最好不要这么用):FLOAT(M,D)或 DOUBLE(M,D)。这
里,(M,D)表示该值一共显示 M 位,其中 D 表示小数点后几位,M 和
D 又称为精度和标度。例如,定义为 FLOAT(5,2)的一个列可以显示为
-999.99-999.99。M 取值范围为 0~255。D 取值范围为 0~30,同时必
须<=M。如果存储时,整数部分超出了范围(如上面的例子中,添加
数值为 01),MySql 就会报错,不允许存这样的值。如果存储时,小
数点部分若超出范围,就分以下情况:若四舍五入后,整数部分没有
超出范围,则只警告,但能成功操作并四舍五入删除多余的小数位后
保存,例如在 FLOAT(5,2)列内插入 999.009,近似结果是 999.01。若
四舍五入后,整数部分超出范围,则 MySql 报错,并拒绝处理。如
999.995 和-999.995 都会报错。说明:小数类型,也可以加
unsigned,但是不会改变数据范围,例如:float(3,2) unsigned 仍然只
能表示 0-9.99 的范围。float 和 double 在不指定精度时,默认会按照
实际的精度(由实际的硬件和操作系统决定)来显示 REAL 就是
DOUBLE ,如果 SQL 服务器模式包括 REAL_AS_FLOAT 选项,
REAL 是 FLOAT 的同义词而不是 DOUBLE 的同义词。
注意:在编程中,如果用到浮点数,要特别注意误差问题,因为浮点
数是不准确的,所以我们要避免使用“=”来判断两个数是否相等。如果
希望保证值比较准确,推荐使用定点数数据类型。
3、位类型(了解)
评论