MySQL数据库存储价格金额使用的数据类型中float、double、decimal的区别

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位数据类型。
 

https://blog.csdn.net/t1anyuan/article/details/70169524

https://blog.csdn.net/hanghangde/article/details/50483779?utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

http://www.zzvips.com/article/87497.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值