百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql数据类型DECIMAL(M,D)用法介绍
分享文章到:

mysql数据类型DECIMAL(M,D)用法介绍

发布时间:01/15 来源: 浏览: 关键词:
昨天因为一个功能需要有数据精度比较高的存储,我常用的int,float,double都不能满足这个要求,后来想到使用数据类型DECIMAL(M,D)来解决,后来还真行,下面我来介绍此函数的用法。


首先,对于精度比较高的东西,比如money,我会用decimal类型,不会考虑float,double,因为他们容易产生误差,

DECIMAL列的声明语法是DECIMAL(M,D)。在MySQL 5.1中,参量的取值范围如下:

·         M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254)。

·         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) 取值范围(MySQL >= 3.23)

 

 代码如下
DECIMAL(4, 1) -9.9 到 99.9 -999.9 到 9999.9
   DECIMAL(5, 1) -99.9 到 999.9 -9999.9 到 99999.9
   DECIMAL(6, 1) -999.9 到 9999.9 -99999.9 到 999999.9
   DECIMAL(6, 2) -99.99 到 999.99 -9999.99 到 99999.99
   DECIMAL(6, 3) -9.999 到 99.999 -999.999 到 9999.999

 

# 在MySQL 3.23 及以后的版本中,DECIMAL(M, D) 的取值范围等于早期版本中的DECIMAL(M + 2, D) 的取值范围。

还有一种数据类型也是比较棒的: 那就是LongBlob,这种数据类型可以直接把图像文件存到数据库中!


笔者,最近在研究mysql的decimal数据类型,现把数据实验结果公布如下

数据库版本:Server version: 5.0.45 Source distribution

1、创建表结构

 代码如下


create table ta (a float,b decimal(10,5));


2、插入数据

 代码如下


insert into ta (a,b) values(1,12345.123423);


实际插入的b列数据为:12345.12342

 

 代码如下
insert into ta (a,b) values(1,123456.1234);


实际插入的b列数据为:99999.99999

结论:decimal数据类型,

1、当插入的整数部分的值超过了其表示范围后就直接忽略了小数部分的值,并以最大值填充。

2、当整数部分合法,小数部分多余的位数,直接截断。

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有5人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板