必威体育Betway必威体育官网
当前位置:首页 > IT技术

Mysql中的Decimal类型是什么?

时间:2019-08-09 23:13:14来源:IT技术作者:seo实验室小编阅读:65次「手机版」
 

decimal类型

 我们在mysql中存字段的时候,比如,一些与金钱有关的数据。这个时候就会对精确到的要求非常高。那么这个时候,就会发现我们之前所学的八大基本类型不再能够满足需求,无论是整形还是浮点型,有人会说存整形有什么不可,但是你要知道不是每个人的金额都是整数的;这样不行的话,存浮点型的就可以了嘛,对于银行存钱来说,一个小数点的问题都会将一笔钱的金额变得很大或者很小......So,这个时候你可以尝试一下Decimal类型,你会发现能够很好地解决你的问题。

    decimal详细介绍:

 decimal(a,b)

参数说明:

        a:指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度为38.

      b:指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从0~a之间的值,默认小数位数是0. 

举例说明,11615.23653234568这个数存你说的三个格式

           decimal:11615

           decimal(3):999

           decdimal(3,2):9.99

           decimal(10,5)11615.23653

 超出精度范围的数会被强制进位并只显示数据类型定义的格式

备注:

    decimal数据类型用于要求非常高的精确计算中,这些类型允许指定数值的精确度和计算方法作为选择参数。精确度在这里指为这个值保存的有效数字的总个数。而计数方法指的是小数点后数字的个数。例如:decimal(5,2)规定了存储的值将不会超过五位数字 ,而且小数点后面有两位数字。

实例1:

 mysql> create table t1(c1 float(10,2), c3decimal(10,2)); 

         Query OK, 0 rows affected (0.02 sec)

         mysql> insert into t1 values(9876543.21, 9876543.12);                   

         Query OK, 1 row affected (0.00 sec)

         mysql> select * from t1;                        

         +----------------+----------------+

         | c1                | c3          |

         +----------------+----------------+

         | 9876543.00 | 9876543.12 | 

        +----------------+-----------------+

        2 rows in set (0.00 sec)

会发现,flocat类型的字段会自动将值四舍五入,而decimal类型的不会,如果用flocat类型的去存与金额有关的数据的时候就会出现问题,而decimal类型的就不会。

      实例2:decimal(5,2)

mysql> create table t1(id1 float(5,2) default null,id2 double(5,2) default null,
id3 decimal(5,2) default null );

mysql> insert into t1 values(1.2345,1.2345,1.2345);
Query OK, 1 row affected, 1 warning (0.04 sec)

mysql> show warnings;
+-------+------+------------------------------------------+
| Level | Code | message |
+-------+------+------------------------------------------+
| Note | 1265 | Data truncated for column 'id3' at row 1  |
+-------+------+------------------------------------------+
1 row in set (0.00 sec)

1.2345 --- 小数点后最多2位,所以保存可以,自动四舍五入数据截断,但会报waning

12.34 --- OK

1234.5 --- 因为小数部分未满2位,要补0.所以保存应该1234.50。所以整个位数超出了5,保存报错。

1.2 --- 小数未满部分补0。按照1.20保存。

默认状态比较:

 浮点数如果不写精度和标度,会按照实际精度值保存,如果有精度和标度,则会自动将四舍五入后的结果插入,系统不会报错;定点数如果不写精度和标度,则按照默认值decimal(10,0)来操作,如果数据超过了精度和标度值,系统会报错。

相关阅读

MySql MediumBlob——MySql的Bolb四种类型

MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。BLOB类型实际是个类型系列(TinyBlob、Blo

mysql的递归查询

描述:最近遇到了一个问题,在mysql中如何完成节点下的所有节点或节点上的所有父节点的查询? 在Oracle中我们

mysql-front 下载安装

下载地址:https://mysql-front.en.softonic.com/ 点击下图位置 再点击下图位置: 即可开始下载。 下一步安装即可。 运行软件: 即

MySQL中日期转换 FROM_UNIXTIME和UNIX_TIMESTAMP

MySQL中日期转换

MySql 笛卡儿积

笛卡儿积实际上就是数学中的排列组合。假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0)

分享到:

栏目导航

推荐阅读

热门阅读