佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > MySQL中Decimal類型和Float Double的區(qū)別(詳解)

MySQL中Decimal類型和Float Double的區(qū)別(詳解)

熱門標簽:鐵路電話系統(tǒng) 服務外包 呼叫中心市場需求 AI電銷 網(wǎng)站排名優(yōu)化 Linux服務器 地方門戶網(wǎng)站 百度競價排名

MySQL中存在float,double等非標準數(shù)據(jù)類型,也有decimal這種標準數(shù)據(jù)類型。

其區(qū)別在于,float,double等非標準類型,在DB中保存的是近似值,而Decimal則以字符串的形式保存數(shù)值。
float,double類型是可以存浮點數(shù)(即小數(shù)類型),但是float有個壞處,當你給定的數(shù)據(jù)是整數(shù)的時候,那么它就以整數(shù)給你處理。這樣我們在存取貨幣值的時候自然遇到問題,我的default值為:0.00而實際存儲是0,同樣我存取貨幣為12.00,實際存儲是12。

幸好mysql提供了兩個數(shù)據(jù)類型:decimal,這種數(shù)據(jù)類型可以輕松解決上面的問題:decimal類型被 MySQL 以同樣的類型實現(xiàn),這在 SQL92 標準中是允許的。他們用于保存對準確精度有重要要求的值,例如與金錢有關(guān)的數(shù)據(jù)。

數(shù)據(jù)定義

float(M,S) M為全長,S為小數(shù)點后長度。對于不精準的例子,網(wǎng)絡上很多,Copy如下:

mysql> create table t1(c1 float(10,2), c3decimal(10,2));

Query OK, 0 rows affected (0.02 sec)

mysql> insert into t1 values(9876543.21, 9876543.12);

Query OK, 1 row affected (0.00 sec)

mysql> select * from t1;

+----------------+-----------------+

| c1 | c3 |

+----------------+-----------------+

| 9876543.00 | 9876543.12 |

+----------------+------------------+

2 rows in set (0.00 sec)

再舉例: DECIMAL(5,2)

mysql> create table t1(id1 float(5,2) default null,id2 double(5,2) default null,
id3 decimal(5,2) default null );

mysql> insert into t1 values(1.2345,1.2345,1.2345);
Query OK, 1 row affected, 1 warning (0.04 sec)

mysql> show warnings;
+-------+------+------------------------------------------+
| Level | Code | Message |
+-------+------+------------------------------------------+
| Note | 1265 | Data truncated for column 'id3' at row 1 |
+-------+------+------------------------------------------+
1 row in set (0.00 sec)

1.2345 --- 小數(shù)點后最多2位,所以保存可以,自動四舍五入數(shù)據(jù)截斷,但會報waning

12.34 --- OK

1234.5 --- 因為小數(shù)部分未滿2位,要補0.所以保存應該1234.50。所以整個位數(shù)超出了5,保存報錯。

1.2 --- 小數(shù)未滿部分補0。按照1.20保存。

默認狀態(tài)比較

浮點數(shù)如果不寫經(jīng)度和標度,會按照實際精度值保存,如果有精度和標度,則會自動將四舍五入后的結(jié)果插入,系統(tǒng)不會報錯;定點數(shù)如果不寫精度和標度,則按照默認值decimal(10,0) 來操作,如果數(shù)據(jù)超過了精度和標度值,系統(tǒng)會報錯。

以上這篇MySQL中Decimal類型和Float Double的區(qū)別(詳解)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • mysql中decimal數(shù)據(jù)類型小數(shù)位填充問題詳解
  • MySQL decimal unsigned更新負數(shù)轉(zhuǎn)化為0
  • 淺談MySQL中float、double、decimal三個浮點類型的區(qū)別與總結(jié)
  • 深入分析MySQL數(shù)據(jù)類型 DECIMAL
  • MySQL中decimal類型用法的簡單介紹
  • 詳解MySQL數(shù)據(jù)類型DECIMAL(N,M)中N和M分別表示的含義
  • MySQL數(shù)據(jù)類型中DECIMAL的用法實例詳解
  • MySQL數(shù)據(jù)類型DECIMAL用法詳解

標簽:崇左 仙桃 黃山 蘭州 湖南 衡水 湘潭 銅川

巨人網(wǎng)絡通訊聲明:本文標題《MySQL中Decimal類型和Float Double的區(qū)別(詳解)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    荥阳市| 龙海市| 德化县| 辽中县| 临漳县| 双柏县| 鄱阳县| 新竹县| 津市市| 嫩江县| 同心县| 福安市| 中宁县| 夏津县| 武胜县| 长治县| 丹巴县| 香格里拉县| 灵山县| 高陵县| 加查县| 承德市| 集安市| 望江县| 乌拉特后旗| 会昌县| 乌拉特中旗| 呼玛县| 新竹市| 连平县| 江西省| 行唐县| 金门县| 德令哈市| 温宿县| 乐陵市| 囊谦县| 长海县| 鄂伦春自治旗| 六盘水市| 克什克腾旗|