在mysql/ target=_blank class=infotextkey>mysql数据库中,对于精度比较高的数据存储,比如money,需要用decimal类型,而不会采用float或double类型,原因在于后者数据误差较大。
decimal列的声明语法是decimal(m,d)。
在mysql 5.1中,参数的取值范围:
1、M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254)。
2、D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。
如DECIMAL(5, 2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。
注:
M 与D 对DECIMAL(M, D) 取值范围的影响
# 在mysql 3.23 及以后的版本中,decimal(m, d) 的取值范围等于早期版本中的decimal(m + 2, d) 的取值范围。
另外一种数据类型:
LongBlob,这种数据类型可以直接把图像文件存到数据库中!
在研究mysql的decimal数据类型,现把数据实验结果公布:
数据库版本:Server version: 5.0.45 Source distribution
1、创建表结构
2、插入数据
实际插入的b列数据为:12345.12342
实际插入的b列数据为:99999.99999
结论:decimal数据类型,
1、当插入的整数部分的值超过了其表示范围后就直接忽略了小数部分的值,并以最大值填充。
2、当整数部分合法,小数部分多余的位数,直接截断。