MYSQL中DECIMAL型別的深入學習

2021-07-26 14:33:24 字數 781 閱讀 4820

複習mysql的過程中,看到decimal這個基本資料型別,忽然回想起了以前在學習微處理器時遇到過的定點數和浮點數的概念,於是在這裡做一下筆記。

在計算機出現之初,實數的儲存成了業界爭論的議題。而一開始,定點數的儲存形式率先被應用於實數的儲存。

什麼是定點數? 如00.11和99.65這樣固定整數和小數字數的儲存形式,就是定點數儲存。

但是後來人們發現了定點數的缺點,其中很明顯的缺點是浪費儲存空間。

於是,浮點數儲存開始出現了,並且應用到今天的主流程式語言之中。

浮點,顧名思義就是小數點是浮動的,也就是說整數和小數部分是變化的。那怎麼才能實現這種方式呢?

沒錯,就是「科學計數法」;

如二進位制數111.0011,可以記作1.110011*2^2,很明顯,這裡包含三部分:

(1)尾數

(2)階碼

(3)符號位(描述階碼的正負)

而按照ieee的浮點型標準,目前浮點型有float(單精度32位)和double(雙精度64位)兩種形式。

對於float(32bits):

(1)尾數(23位),因為整數字一定為1,所以省略,所以實際上可以表示24位有效數字;

(2)階碼(8位);

(3)符號位(1位);

對於double(64bits):

(1)尾數(52位),實為53位有效數字;

(2)階碼(11位);

(3)符號位(1位);

好了,原本要將mysql的定點數(decimal)的,卻詳細介紹了浮點數,但是浮點數理解了,定點數就不在話下了。

mysql中的decimal型別

今天除錯程式,系統丟擲這個異常 out of range value adjusted for column bodyweight 進資料庫看見這個欄位的型別是decimal 4,2 錄入三位數就出異常。decimal m d zerofill 乙個未壓縮 unpack 的浮點數字。不能無符號。行為...

MySQL資料型別DECIMAL

decimal 型別不同於float和decimal,其中decimal 實際是以串存放的。decimal 可能的最大取值範圍與double 一樣,但是其有效的取值範圍由m 和d 的值決定。如果改變m 而固定d,則其取值範圍將隨m 的變大而變大。表2 7的前三行說明了這一點。如果固定m 而改變d,則...

MySQL資料型別中DECIMAL的作用和用法

在mysql資料型別中,例如int,float,double,char,decimal等,它們都有各自的作用,下面我們就主要來介紹一下mysql資料型別中的decimal型別的作用和用法。一般賦予浮點列的值被四捨五入到這個列所指定的十進位制數。如果在乙個float 8,1 的列中儲存1.2 3 4 ...