MySQL中float、double、decimal的区别

文章讨论了MySQL中的float、double和decimal数据类型在表示数值时的精度差异。float和double在不指定精度时会按实际精度处理,而decimal如果不指定精度,默认为10位整数,0位小数。在进行SUM运算时,float和double可能出现不精确的结果,而decimal能提供精确的计算。因此,对于财务和货币计算,decimal是更合适的选择。
摘要由CSDN通过智能技术生成

float类型表示单精度浮点数值,double类型表示双精度浮点数值,float和double都是浮点型,而decimal是定点型;

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

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

先创建一个表:

CREATE TABLE test(
f FLOAT(10,2) DEFAULT NULL,
d DOUBLE(10,2) DEFAULT NULL,
de DECIMAL(10,2) DEFAULT NULL
);

insert三条数据如下所示:

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

然后修改表结构并新增一条数据:

ALTER TABLE test MODIFY f FLOAT;

ALTER TABLE test MODIFY d DOUBLE;

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

此时计算求和值如下图所示:

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

float和double求SUM的结果都是不精确的,只有decimal求SUM得到的是精准数值:

所以,decimal 类型是适合财务和货币计算的128位数据类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Meteor.792

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值