Sql的decimal、float、double類型的區別


三者的區別介紹

float:浮點型,含字節數為4,32bit,數值范圍為-3.4E38~3.4E38(7個有效位)

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

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

 

按存儲的范圍進行排序

float(real)

double

decimal(numeric)

 

decimal的詳細介紹

decimal(a,b)

參數說明

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

備注

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

實例

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

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

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

decimal dd=345.545454879.....--可以支持28位,對最后一位四舍五入。

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

總結

數值存儲范圍越小的精度越高,存儲數值范圍越大,精度就越不准確,如果存儲正常金額的情況下,使用money,好處在於可以存儲不指定的小數點位數的數值,比較真實。如果對於既要求精度,又固定小數點位數的數值存儲,采用decimal(numeric),優點在於可以自定義小數點位數,精度高。如特殊情況,如數值范圍巨大只能用float(real)類型了,此類型一般不提倡使用。


免責聲明!

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



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