美文网首页MySQL
MySQL定点数据类型(精确值)-DECIMAL

MySQL定点数据类型(精确值)-DECIMAL

作者: Jerry_1116 | 来源:发表于2018-10-24 23:46 被阅读0次

1 DECIMAL介绍

在MySQL中,DECIMAL和NUMERIC是定点类型数据,以二进制形式存储,因此存储的是准确的数字。
在创建MySQL的DECIMAL列的时候,可以指定进度和标度:DECIMAL(M,D)。M为精度(precision),表示该值的总长度;D为标度(scale),表示小数点后面的长度。
例如:
DECIMAL(7,4)可存储的数据范围为-999.9999~999.9999。MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。
在标准SQL中,语法DECIMAL为默认值,等价于DECIMAL(10,0)。DECIMAL(M)等价于DECIMAL(M,0)。
FLOAT和DOUBLE在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0,即DECIMAL(10,0)。

DECIMAL的数字总长度M最大为65,但是实际能表示的数值范围受精度和标度的限制。当DECIMAL(M,D)列存储的数值的小数位数超过D,则四舍五入到D位。当DECIMAL(M,D)列存储的数值大于该列能表示的范围,则存储为DECIMAL(M,D)能表示的最大值;当DECIMAL(M,D)列存储的数值小于该列能表示的范围,则存储为DECIMAL(M,D)能表示的最小值。

示例:
定义数据库列为DECIMAL(5,2)
插入数据:

插入值 结果
1.2345 小数点后最多2位,所以保存可以,自动四舍五入数据截断,但会报waning
12.34 OK
1234.5 因为小数部分未满2位,要补0.所以保存应该1234.50。所以整个位数超出了5,保存报错。
1.2 小数未满部分补0。按照1.20保存。

注意
在mysql中float、double(或real)是浮点数,decimal(或numberic)是定点数。
浮点数相对于定点数的优点是在长度一定的情况下,浮点数能够表示更大的数据范围;它的缺点是会引起精度问题。
在今后关于浮点数和定点数的应用中,大家要记住以下几点:
1、浮点数存在误差问题;
2、对货币等对精度敏感的数据,应该用定点数表示或存储;
3、编程中,如果用到浮点数,要特别注意误差问题,并尽量避免做浮点数比较;
4、要注意浮点数中一些特殊值的处理。

2 浮点数和定点数的比较

默认状态比较

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

相关文章

  • MySQL定点数据类型(精确值)-DECIMAL

    1 DECIMAL介绍 在MySQL中,DECIMAL和NUMERIC是定点类型数据,以二进制形式存储,因此存储的...

  • MySQL 2.2 常见数据类型详解与DML操作

    一.前番回顾 1.MySQL数据类型 1) 整型: 2)定点数与浮点型: 定点数:DECIMAL(M,D) /...

  • MySQL PT工具使用

    MySQL 的decimal数据类型 DECIMAL 列的声明语法是 DECIMAL(M,D)。参数值的范围如下:...

  • mysql数据完整性

    数据库中的字段类型 mysql中的数据类型有很多,常用的数据类型如下 数字:int,decimal decimal...

  • sqlalchemy的ORM常用数据类型详解

    ORM常用数据类型Integer:整形Float:浮点类型Boolean:布尔类型DECIMAL:定点类型enum...

  • sqlalchemy的ORM常用数据类型详解

    1.ORM常用数据类型 Integer:整形Float:浮点类型Boolean:布尔类型DECIMAL:定点类型e...

  • SQL

    数据类型 最常用的数据类型int整型varchar字符串float浮点数decimal精确浮点数datetime日...

  • 细数Java BigDecimal中的坑

    1. 引言 在商业中,往往要求结果精确,这时BigDecimal就用到了,在Mysql中 decimal(19,4...

  • MySQL DECIMAL数据类型

    同事问MySQL数据类型DECIMAL(N,M)中N和M分别表示什么含义,M不用说,显然是小数点后的小数位数,但这...

  • mysql 小记

    innodb引擎下 数据类型 DECIMAL 用于存储精确的浮点数据,但是通常会消耗更多的空间和计算开销。 VAR...

网友评论

    本文标题:MySQL定点数据类型(精确值)-DECIMAL

    本文链接:https://www.haomeiwen.com/subject/ojgizftx.html