MySQL小數型別

2021-10-03 20:16:54 字數 1192 閱讀 3246

mysql 中使用浮點數和定點數來表示小數。

浮點型別有兩種,分別是單精度浮點數(float)和雙精度浮點數(double);定點型別只有一種,就是 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 中的小數型別和儲存需求。

decimal 型別不同於 float 和 double。double 實際上是以字串的形式存放的,decimal 可能的最大取值範圍與 double 相同,但是有效的取值範圍由 m 和 d 決定。如果改變 m 而固定 d,則取值範圍將隨 m 的變大而變大。

從上表中可以看到,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)。

浮點數相對於定點數的優點是在長度一定的情況下,浮點數能夠表示更大的範圍;缺點是會引起精度問題。

mysql資料庫表設計小數型別

float 浮點型,含位元組數為4,32bit,數值範圍為 3.4e38 3.4e38 7個有效位 double 雙精度實型,含位元組數為8,64bit數值範圍 1.7e308 1.7e308 15個有效位 decimal 數字型,128bit,不存在精度損失,常用於銀行帳目計算。28個有效位 nu...

mysql限制小數字 mysql 控制小數字數

1 round x,d 用於資料的四捨五入,round x 其實就是round x,0 也就是預設d為0 這裡有個值得注意的地方是,d可以是負數,這時是指定小數點左邊的d位整數字為0,同時小數字均為0 select round 100.3465,2 round 100,2 round 0.6,2 r...

關於BigDecimal,小數型別的處理

小數字數 bigdecimal.setscale 方法用於格式化小數點 setscale 1 表示保留一位小數,預設用四捨五入方式 setscale 1,bigdecimal.round down 直接刪除多餘的小數字,如2.35會變成2.3 setscale 1,bigdecimal.round ...