千家信息网

MySQL中float double和decimal类型有何区别

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,下文主要给大家带来MySQL中float double和decimal类型有何区别,希望这些内容能够带给大家实际用处,这也是我编辑MySQL中float double和decimal类型有何区别这篇文
千家信息网最后更新 2026年11月01日MySQL中float double和decimal类型有何区别

下文主要给大家带来MySQL中float double和decimal类型有何区别,希望这些内容能够带给大家实际用处,这也是我编辑MySQL中float double和decimal类型有何区别这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,

float和double都是浮点型,而decimal是定点型;


MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,

M表示该值的总共长度,D表示小数点后面的长度,

M和D又称为精度和标度,如float(7,4)的 可显示为-999.9999,

MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。


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


测试1:

CREATE TABLE test1 (f FLOAT(5,2) DEFAULT NULL,d DOUBLE(5,2) DEFAULT NULL,de DECIMAL(5,2) DEFAULT NULL);
INSERT INTO test1(f,d,de) VALUES(1.23,1.23,1.23);

数据插入正确:

2.

INSERT INTO test1(f,d,de) VALUES(1.234,1.234,1.23);

数据插入都正确,但是f和d由于标度的限制,舍去了最后一位。

3.

INSERT INTO test1(f,d,de) VALUES(1.234,1.234,1.234);

插入成功,但是有警告

4.把f,d,de的精度和标度去掉。

INSERT INTO test1(f,d,de) VALUES(1.234,1.234,1.234);

插入正确【f和d的数据正确插入,而de被截断】,同时也会有3一样的提示!

浮点数如果不写精度和标度,则会按照实际显示,如果有精度和标度,则会将数据四舍五入后插入,系统不报错,定点数如果不设置精度和标度,刚按照默认的(10,0)进行操作,如果数据超过了精度和标度值,则会警告!


5. 数据求SUM()时会出现不同的结果,float和double求SUM都会出现很多小数点,而decimal求SUM得到的是精准数值:

SELECT SUM(f),SUM(d),SUM(de) FROM test1;

理论上:f,d后面不应该出现很长的一串浮点小数点的。


6.loat列类型默认长度查不到结果,必须指定精度

SELECT * FROM test1  WHERE f = 1.234;

查不到任何一列。

7.

float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)

double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效位)

decimal:数字型,128bit,不存在精度损失(相对不存在,28个有效位后会报错),常用于银行帐目计算。(28个有效位)

float f = 345.98756f;//结果显示为345.9876,只显示7个有效位,对最后一位数四舍五入。

double d=345.975423578631442d;//结果显示为345.975423578631,只显示15个有效位,对最后一位四舍五入。

注:float和double的相乘操作,数字溢出不会报错,会有精度的损失。

decimal dd=345.545454879.....//可以支持28位,对最后一位四舍五入。因为高精度,28位的有效位数,这才是财务计算中使用的最主要原因。

所有浮点数计算都有精度损失问题,而decimal同样是浮点数[定点数],所以同样有精度损失!

下面的输出结果与不进行相加操作相同,并且没有异常。同样造成了精度损失,不过dd的有效位数超过了28位

综上,如果你做财务方面,那么用decimal吧,如果你计算的数值是人类所用的,那么也用decimal吧。double感觉就是个鸡肋,还真想不出什么用到的地方。【网上观点,只供参考】

对于以上关于MySQL中float double和decimal类型有何区别,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

精度 有效 数值 类型 标度 浮点 数据 结果 四舍五入 损失 四舍 小数 点数 位数 内容 实际 小数点 长度 下文 字节 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 重生之互联网科技帝国 互联网科技公司华为 中国 科技 互联网 互联网 科技创业 杭州互联网科技公司 四个字互联网科技公司取名 科技大学互联网专业好不好 重庆威客帮互联网科技 互联网公司科技股 厦门千工互联网科技有限公司 深圳市优智互联网科技有限公司 互联网科技大奖都有哪些公司 华夏恒生科技与互联网科技 广州互联网高科技取餐柜 郑州欣桑互联网科技有限公司 新氧科技和美国互联网有关系吗 上海万顺科技互联网有限公司招聘 北京天晋互联网科技有限公司 互联网科技大佬云集 平安好医生打造互联网科技医疗 腾讯阿里互联网科技 万易互联网科技有限公司 深圳艾佳互联网科技 互联网科技英文翻译 花神(南京)互联网科技有限公司 互联网科技扶贫时间 江苏苏星互联网科技有限公司 电子商务与互联网科技的关系 宇信科技在杭州互联网排第几 九思连强互联网电子科技有限公司
0