decimal,float和double的區別是什麼?

yinghualeihenmei發表於2024-09-26

原文連結:https://blog.csdn.net/hellojoy/article/details/118105569

表示小數的一共有三種型別:float是單精度,double是雙精度,decimal是數字型,它們所佔的記憶體空間不一樣,表示的位數也不一樣。

1、精度:

  • float單精度小數部分能精確到小數點後面6位,用 32 位二進位制進行描述
  • double雙精度小數部分能精確到小數點後的15位,,用64位二進位制進行描述,比float型更精確

2、佔記憶體及處理速度:

  • float單精度記憶體佔4個位元組
  • double雙精度記憶體佔8個位元組,是float型的兩倍,且運算速度也比float慢得多

結論:雖然double型比float型精度高,但由於佔記憶體更大,運算速度慢,且即使是double依然會存在精度損失的問題,且不會報告任何的錯誤,也不會有任何的異常產生。所以如果涉及到小數計算的話,我們會用到下邊的decimal型:

1、精度:

decimal用l128位高精度浮點數,常用於金融運算,不會出現浮點數計算的誤差

2、佔記憶體及處理速度:

decimal型別的資料儲存形式是,將每9位十進位制數儲存為4個位元組

舉個例子:
1)欄位decimal(5,2),5-2=3,其中小數部分為2,對應上表1個位元組,整數部分為3,對應上表2個位元組
2)欄位decimal(20,6),20-6=14,其中小數部分為6,就對應上表中的3個位元組,而整數部分為14,14-9=5,就是4個位元組再加上表中的3個位元組

結論:decimal型比浮點型計算精度要高,通常使用更少的空間。所以通常我們在設定小數的時候,都是用的decimal型別。

相關文章