mysql decimal類型

MySQL中存在float,double等非精準數據類型,也有decimal這種精準數據類型。mysql

三者的區別介紹sql

float:浮點型,含字節數爲4,32bit,數值範圍爲-3.4E38~3.4E38(7個有效位)(E38->*10的38次冪)sqlserver

double:雙精度實型,含字節數爲8,64bit數值範圍-1.7E308~1.7E308(15個有效位)spa

decimal:數字型,128bit,不存在精度損失,經常使用於銀行賬目計算。(28個有效位)code

 

decimal的詳細介紹server

decimal(a,b)
 ci

參數說明it

a指定指定小數點左邊和右邊能夠存儲的十進制數字的最大個數,最大精度38。
b指定小數點右邊能夠存儲的十進制數字的最大個數。小數位數必須是從 0 到 a之間的值。默認小數位數是 0。class

備註數據類型

DECIMAL數據類型用於要求很是高的精確度的計算中,這些類型容許指定數值的精確度和計數方法做爲選擇參數。精確度在這裏是指爲這個值保存的有效數字的總個數,而計數方法表示小數點後數字的個數。例如,語句DECIMAL (5,2)規定了存儲的值將不會超過5位數字,開且小數點後面有2位數字。

實例

SQL 代碼   複製

float f = 345.98756f;--結果顯示爲345.9876,只顯示7個有效位,對最後一位數四捨五入。

double d=345.975423578631442d;--結果顯示爲345.975423578631,只顯示15個有效位,對最後一位四捨五入。

--注:float和double的相乘操做,數字溢出不會報錯,會有精度的損失。

decimal dd=345.545454879.....--能夠支持28位,對最後一位四捨五入。

--:當對decimal類型進行操做時,數值會因溢出而報錯。

 

總結

數值存儲範圍越小的精度越高,存儲數值範圍越大,精度就越不許確,若是存儲正常金額的狀況下,使用money,好處在於能夠存儲不指定的小數點位數的數值,比較真實。

 注意:mysql中沒有money類型,money是儲存貨幣類型,sqlserver中才有,而在mysql中你們通常用double來代替。

若是對於既要求精度,又固定小數點位數的數值存儲,採用decimal,優勢在於能夠自定義小數點位數,精度高。如特殊狀況,如數值範圍巨大隻能用float 類型了,此類型通常不提倡使用。

相關文章
相關標籤/搜索