欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql float和decimal

程序员文章站 2022-06-22 22:07:43
结论: 1. float 默认只保存6位(除去小数点),如果超过6位,则四舍五入,所以float存储的数据是不精确的,只是近似值; 2. decimal,如果输入的数据超过了定义的最大值,那么则溢出,数据库里面存储的是定义的最大值,例如,decimal(5,2)输入123123.45,实际存储为99 ......
结论:
1. float 默认只保存6位(除去小数点),如果超过6位,则四舍五入,所以float存储的数据是不精确的,只是近似值;
2. decimal,如果输入的数据超过了定义的最大值,那么则溢出,数据库里面存储的是定义的最大值,例如,decimal(5,2)输入123123.45,实际存储为999.99;
3. decimal,如果只是小数部分超过定义的长度,那么则截断(非四舍五入)指定长度,例如,decimal(10,2)输入12345678.123456,实际存储为12345678.12;
4. decimal,整数部分和小数部分是分开存储的,每9个数字占用4个字节,在mysql内部使用的二进制存储,基本没有长度的限制;
 
建议:
1. 尽量不用float类型;
2. 存钱之类的数据,使用int(bigint)来存,在计算的时候除以100;
3. 一定要存小数的话,decimal是不错的选择,但是需要考虑到数据的范围问题,以防越界产生的错误;