mysql - 小數類型


分類:

浮點數定點數來表示小數

  1. 浮點類型有兩種,分別是單精度浮點數(FLOAT)和雙精度浮點數(DOUBLE
  2. 定點類型只有一種,就是 DECIMAL

顯示寬度 與 小數位數

浮點類型和定點類型都可以用(M, D)來表示,其中M稱為精度,表示總共的位數D稱為標度,表示小數的位數

浮點數類型的取值范圍為 M(1~255)和 D(1~30,且不能大於 M-2),分別表示顯示寬度和小數位數。M 和 D 在 FLOAT 和DOUBLE 中是可選的,FLOAT 和 DOUBLE 類型將被保存為硬件所支持的最大精度。DECIMAL 的默認 D 值為 0、M 值為 10。

MySQL 中的小數類型和存儲需求:



 

類型名稱 說明 存儲需求
FLOAT 單精度浮點數 4 個字節
DOUBLE 雙精度浮點數 8 個字節
DECIMAL (M, D),DEC 壓縮的“嚴格”定點數 M+2 個字節

取值范圍:

decimal:

DECIMAL 的存儲空間並不是固定的,而由精度值 M 決定,占用 M+2 個字節

FLOAT 類型的取值范圍如下:

  • 有符號的取值范圍:-3.402823466E+38~-1.175494351E-38。
  • 無符號的取值范圍:0 和 -1.175494351E-38~-3.402823466E+38。

DOUBLE 類型的取值范圍如下:

  • 有符號的取值范圍:-1.7976931348623157E+308~-2.2250738585072014E-308。
  • 無符號的取值范圍:0 和 -2.2250738585072014E-308~-1.7976931348623157E+308。

提示:不論是定點還是浮點類型,如果用戶指定的精度超出精度范圍,則會四舍五入進行處理。

默認精度:

FLOAT 和 DOUBLE 在不指定精度時,默認會按照實際的精度(由計算機硬件和操作系統決定),DECIMAL 如果不指定精度,默認為(10,0)。

定點數的物理存儲形式:

  1. 在 MySQL 中,定點數以字符串形式存儲,在對精度要求比較高的時候(如貨幣、科學數據),使用 DECIMAL 的類型比較好
  2. 另外兩個浮點數進行減法和比較運算時也容易出問題,所以在使用浮點數時需要注意,並盡量避免做浮點數比較


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM