备注:本文修订于2020年6月6日

1、浮点数和定点数的介绍:存储形式

MySQL的数字数据类型分为四种:位数据类型、整数数据类型、定点数据类型和浮点数据类型。每种数字类型又分为多种常用的数据类型。本文主要讲述一下定点数据类型和浮点数据类型。

对于带小数点的数据类型,MySQL分为两种方式:浮点数和定点数。浮点数包括 float(单精度)和 double(双精度),而定点数则只有 decimal 一种表示。定点数包括 decimal 以及同义词 numeric,定点数的整数位和小数位分别存储。

因为定点数在 MySQL 内部以字符串形式存放,比浮点数更精确,适合用来表示货币等精度高的数据。

2、浮点数和定点数的表示和精度问题

MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,如float(5,2)可显示为999.99,MySQL保存值时会进行四舍五入,如果插入999.009,则结果为999.01。

CREATE TABLE `t1` (
`id1` float(5,2) default NULL,
`id2` double(5,2) default NULL,
`id3` decimal(5,2) default NULL
)


insert into t1 values(1.23,1.23,1.23);

insert into t1 values(1.234,1.234,1.23);

insert into t1 values(1.234,1.234,1.234);

float和double在不指定精度时,默认会按照实际的精度来显示,而decimal在不指定精度时,默认整数为10,小数为0。

3、思考

MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度。为什么不用M表示小数点的前面的长度呢?如果这样做的话,那么D是不可以省略的。相反,如果用M表示该值的总共长度,则D是可以省略的。

4、延伸

最后,我感觉一定要与css float里面的浮点相关联,这样让float的思维空间更大,更容易记忆,毕竟神经元是网状结构的。

5、参考

https://www.cnblogs.com/pangdajin/p/9541618.html

标签: none

添加新评论