mysql decimal_MySQL

php中文网
发布: 2016-06-01 13:29:20
原创
1385人浏览过

bitsCN.com

mysql decimal

 

首先,对于精度比较高的东西,比如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) 

 

 

代码如下  

 

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、当整数部分合法,小数部分多余的位数,直接截断。

bitsCN.com
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号