MySQL float 类型的精度
来源:互联网 发布:gm灰色预测软件 编辑:程序博客网 时间:2024/05/17 06:09
总结:
要得到1位或2位精确小数的话,整数不能高于32767
即:f<32767.99
因为 2E15=32768
所以最多只能正确处理0~32767的整数,
要得到3位精确小数的话,整数不能高于16383
即:f<16383.999
因为 2E14=16384
要得到4位精确小数,整数不能高于2047
即:f<2047.9999
而 2E11=2048
要得到5位精确小数,整数不能高于127
即:f<127.99999
而 2E7=128
要得到6位精确小数,整数不能高于15
即:f<15.999999
而 2E4=16
要得到7位精确小数,整数不能高于0
即:f<0.9999999
而 2E0=0
要得到8位以上的精确小数,是不可能的
即:f不存在
笔者得到了一些数据,不过得不到它变化的规律,还请高人指点
笔者得出结论的过程:
我建了这个表:
create table q(
money float(15,3)
);
然后插入这个数据:
insert into q values(1234567.234);
再select一下读出来后发现,它显示的是:
1234567.250
然后插入这个数据:
insert into q values(12345672.34);
再select一下读出来后发现,它显示的是:
12345672.000
也就是说,有10数位与以上的话就会出现不准确的情况。
如果是这样的话:
create table q(
money float(10,3)
);
insert into q values(1234567.3);
得到的是:
1234567.250
insert into q values(1234567);
得到的是:
1234567.000
insert into q values(123456.7);
得到的是:
123456.703
insert into q values(12345.67);
得到的是:
12345.670
insert into q values(32768.990);
得到:32768.988
insert into q values(32767.990);
得到:32767.990
经过很多次的试验
要得到2位小数则整数部分最多不能超过32767。
表改为:
create table q(
money float(30,10)
);
对纯小数部分测试:
insert into q values(0.999);
得到:0.9990000129
insert into q values(0.9999);
得到 :0.9998999834
insert into q values(0.99999);
得到:0.9999899864
insert into q values(327.99);
得到 :327.9899902344
insert into q values(327.999);
得到:327.9989929199
表改为:
create table q(
money float(7,2)
);
insert into q values(327.99);
得到:327.99
insert into q values(327.9999);
得到:328.00
insert into q values(32767.9999);
得到:32768.00
insert into q values(32767.99);
得到: 32767.99
insert into q values(99999.99);
得到: 99999.99
表改为:
create table q(
money float(8,2)
);
insert into q values(999999.99);
得到 :1000000.00
insert into q values(999998.99);
得到:999999.00
insert into q values(130999.99);
得到:130999.99
表改为:
create table q(
money float(9,3)
);
insert into q values(32768.990);
得到: 32768.988
insert into q values(32767.990);
得到:32767.990
insert into q values(16383.999);
得到:16383.999
要得到3位小数的话,整数不能高于16383
insert into q values(32767.90);
得到:32767.900
insert into q values(32768.90);
得到:32768.898
要得到1位小数的话,整数不能高于32767
- MySQL float 类型的精度
- MySQL float 类型的精度
- mysql中float类型精度解析
- mysql的float类型是单精度浮点类型导致数据误差.
- 控制double,float类型数据的精度
- mysql中float精度
- float类型精度损失问题
- float与double类型的内存分布,精度和范围
- float与double类型的内存分布,精度和范围
- float与double类型的内存分布,精度和范围
- C语言 float类型的数据相加缺失精度
- float与double类型的内存分布,精度和范围
- float和double类型精度表示的区别
- C++中float与double类型的精度区别
- float类型的精度问题与计算机中的存储
- float与double类型的范围和精度
- SpringMVC利用Column 注解约束double/float类型的精度
- float的精度问题
- vc++安装问题
- 十个小细节帮您成功优化网站
- UltraEdit不能高亮显示的解决方法
- DWR回调使用方法
- Windows Mobile、Windows CE内存管理相关文章
- MySQL float 类型的精度
- 第一次来的感受
- Oracle 物化视图
- 在windows下直接sqlplus登录oracle
- 数据库sql语言性能监控
- 将html的form表单数据存入Oracle
- 基本数据类型
- 从一个字符串中找出第一个不重复字符
- Gettext 的内容