要获得1位或2位精确小数的话,整数不能高于32767测试
即:f<32767.99spa
由于2E15=32768.net
因此最多只能正确处理0~32767的整数,get
要获得3位精确小数的话,整数不能高于16383it
即:f<16383.999io
由于 2E14=16384table
要获得4位精确小数,整数不能高于2047class
即:f<2047.9999test
而 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