千家信息网

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

发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,下文主要给大家带来MySQL中float double和decimal类型有何区别,希望这些内容能够带给大家实际用处,这也是我编辑MySQL中float double和decimal类型有何区别这篇文
千家信息网最后更新 2025年11月14日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安全错误 数据库的锁怎样保障安全 搜索框传数据库 海南知名戴尔服务器云服务器 嘉定区第三方网络技术要多少钱 网络优化属于网络安全吗 网络安全课活动 excel列标记数据库 如何获取高斯数据库当前时间 网络安全教育短语 美国有5g网络技术吗 深圳蓝思网络技术美工 pcs7数据库不能用 杭州富阳区物流软件开发 数据库错误代码12547 新奥尔良无法使用游戏服务器 ea服务器一般什么时候刷新 电子表格怎么查找对应数据库 网络安全人才中心二期临空港 为了加强 网络安全 通知 浙江潮流软件开发检测中心 网络安全招商 无法登录服务器是什么原因 update数据库功能 plsql卸载影响数据库吗 虹口区大规模软件开发不二之选 数据库中删除一个表结构的命令是 网络技术三级考试教程 杀毒软件怎么添加服务器更新地址 金蝶打开服务器没有响应 vf数据库功能需求 软件开发标书文件评分标准
0