欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL数据类型中DECIMAL的用法实例详解

程序员文章站 2022-06-25 12:10:21
mysql数据类型中decimal的用法实例详解 在mysql数据类型中,例如int,float,double,char,decimal等,它们都有各自的作用,下面我们就...

mysql数据类型中decimal的用法实例详解

在mysql数据类型中,例如int,float,double,char,decimal等,它们都有各自的作用,下面我们就主要来介绍一下mysql数据类型中的decimal类型的作用和用法。

一般赋予浮点列的值被四舍五入到这个列所指定的十进制数。如果在一个float(8, 1)的列中存储1. 2 3 4 5 6,则结果为1. 2。如果将相同的值存入float(8, 4) 的列中,则结果为1. 2 3 4 6。

这表示应该定义具有足够位数的浮点列以便得到尽可能精确的值。如果想精确到千分之一,那就不要定义使该类型仅有两位小数。

浮点值的这种处理在mysql3.23 中有例外,float(4) 和float(8) 的性能有所变化。这两种类型现在为单精度( 4 字节)和双精度( 8 字节)的类型,在其值按给出的形式存放(只受硬件的限制)这一点上说,这两种类型是真浮点类型。

decimal 类型不同于float和decimal,其中decimal 实际是以串存放的。decimal 可能的最大取值范围与double 一样,但是其有效的取值范围由m 和d 的值决定。如果改变m 而固定d,则其取值范围将随m 的变大而变大。表2 - 7的前三行说明了这一点。如果固定m 而改变d,则其取值范围将随d 的变大而变小(但精度增加)。表2 - 7的后三行说明了这一点。

MySQL数据类型中DECIMAL的用法实例详解

给定的decimal 类型的取值范围取决于mysql数据类型的版本。对于mysql3.23 以前的版本,decimal(m, d) 列的每个值占用m 字节,而符号(如果需要)和小数点包括在m 字节中。因此,类型为decimal(5, 2) 的列,其取值范围为-9.99 到9 9 . 9 9,因为它们覆盖了所有可能的5 个字符的值。

正如mysql3.23 一样,decimal 值是根据ansi 规范进行处理的, ansi 规范规定decimal(m, d) 必须能够表示m 位数字及d 位小数的任何值。

例如, decimal(5, 2) 必须能够表示从-999.99 到999.99 的所有值。而且必须存储符号和小数点,因此自mysql3.23以来decimal 值占m + 2 个字节。对于decimal(5, 2),“最长”的值(- 9 9 9 . 9 9)需要7个字节。

在正取值范围的一端,不需要正号,因此mysql数据类型利用它扩充了取值范围,使其超过了ansi 所规范所要求的取值范围。如decimal(5, 2) 的最大值为9 9 9 9 . 9 9,因为有7 个字节可用。

简而言之,在mysql3.23 及以后的版本中,decimal(m, d) 的取值范围等于更早版本中的decimal(m + 2, d) 的取值范围。在mysql数据类型的所有版本中,如果某个decimal 列的d 为0,则不存储小数点。这样做的结果是扩充了列的取值范围,因为过去用来存储小数点的字节现在可用来存放其他数字了。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!