總結:
要得到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精度與範圍總結
float型別用於表示近似數值資料型別。sql標準 允許在關鍵字float後面的括號內選擇用位指定精度 但不能為指數範圍 mysql還支援可選的只用於確定儲存大小的精度規定。0到23的精度對應 float列的4位元組單精度。24到53的精度對應double列的8位元組雙精度。單精度浮點數用4位元組 ...
mysql float精度與範圍總結
float型別用於表示近似數值資料型別。sql標準 允許在關鍵字float後面的括號內選擇用位指定精度 但不能為指數範圍 mysql還支援可選的只用於確定儲存大小的精度規定。0到23的精度對應 float列的4位元組單精度。24到53的精度對應double列的8位元組雙精度。單精度浮點數用4位元組 ...
關於float的精度型別
1 主要記錄一下為什麼float的精度型別為6 7位 首先,應該明確float資料型別,佔4個位元組,共4 8 32位,其中 ieee754標準規定如下 32位當中,1位為符號位 8位指數字 23位為數值位。故float型別的數值是由後邊的23位決定。23位指的是2進製數可以表示2 23取值範圍以內...