溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL中float和decimal類型的作用是什么

發(fā)布時(shí)間:2021-08-04 16:53:46 來源:億速云 閱讀:284 作者:Leah 欄目:數(shù)據(jù)庫

本篇文章給大家分享的是有關(guān)MySQL中float和decimal類型的作用是什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

 float,double容易產(chǎn)生誤差,對(duì)精確度要求比較高時(shí),建議使用decimal來存,decimal在mysql內(nèi)存是以字符串存儲(chǔ)的,用于定義貨幣要求精確度高的數(shù)據(jù)。在數(shù)據(jù)遷移中,float(M,D)是非標(biāo)準(zhǔn)定義,最好不要這樣使用。M為精度,D為標(biāo)度。
  mysql> create table t1(c1 float(10,2), c3 decimal(10,2));
  Query OK, 0 rows affected (0.02 sec)
  mysql> insert into t1 values(1234567.23, 1234567.23);
  Query OK, 1 row affected (0.01 sec)
  mysql> select * from t1;
  +------------+------------+
  | c1 | c3 |
  +------------+------------+
  | 1234567.25 | 1234567.23 |
  +------------+------------+
  1 row in set (0.02 sec)
  mysql> insert into t1 values(9876543.21, 9876543.12);
  Query OK, 1 row affected (0.00 sec)
  mysql>
  mysql> select * from t1;
  +------------+------------+
  | c1 | c3 |
  +------------+------------+
  | 1234567.25 | 1234567.23 |
  | 9876543.00 | 9876543.12 |
  +------------+------------+
  2 rows in set (0.00 sec)
  不定義fload, double的精度和標(biāo)度時(shí),存儲(chǔ)按給出的數(shù)值存儲(chǔ),這于OS和當(dāng)前的硬件有關(guān)。
  decimal默認(rèn)為decimal(10,0)
  因?yàn)檎`差問題,在程序中,少用浮點(diǎn)數(shù)做=比較,可以做range比較。如果數(shù)值比較,最好使用decimal類型。
  精度中,符號(hào)不算在內(nèi):
  mysql> insert into t1 values(-98765430.21, -98765430.12);
  Query OK, 1 row affected (0.01 sec)
  mysql> select * from t1;
  +--------------+--------------+
  | c1 | c3 |
  +--------------+--------------+
  | 1234567.25 | 1234567.23 |
  | 9876543.00 | 9876543.12 |
  | -98765432.00 | -98765430.12 |
  +--------------+--------------+
  3 rows in set (0.00 sec)
  float占4個(gè)字節(jié),double占8個(gè)字節(jié),decimail(M,D)占M+2個(gè)字節(jié)。
  decimal 類型可以精確地表示非常大或非常精確的小數(shù)。大至 1028(正或負(fù))以及有效位數(shù)多達(dá) 28 位的數(shù)字可以作為 decimal類型存儲(chǔ)而不失其精確性。該類型對(duì)于必須避免舍入錯(cuò)誤的應(yīng)用程序(如記賬)很有用。
  float是浮點(diǎn)數(shù),不能指定小數(shù)位。
  decimal是精確數(shù),可以指定精度。
  對(duì)mysql 5來說 decimal(p,s)中p最大為65,S最大為30
  decimal數(shù)據(jù)類型最多可存儲(chǔ) 38 個(gè)數(shù)字,它存儲(chǔ)了一個(gè)準(zhǔn)確(精確)的數(shù)字表達(dá)法,不存儲(chǔ)值的近似值。
  當(dāng)數(shù)據(jù)值一定要按照指定精確存儲(chǔ)時(shí),可以用帶有小數(shù)的decimal數(shù)據(jù)類型來存儲(chǔ)數(shù)字。
  float和real數(shù)據(jù)類型被稱為近似的數(shù)據(jù)類型。不存儲(chǔ)精確值.當(dāng)要求精確的數(shù)字狀態(tài)時(shí),比如在財(cái)務(wù)應(yīng)用程序中,在那些需要舍入的操作中, 或在等值核對(duì)的操作中,就不使用這些數(shù)據(jù)類型。這時(shí)就要用integer、decimal、money或smallmone數(shù)據(jù)類型。
  在 WHERE 子句搜索條件中(特別是 = 和 <> 運(yùn)算符),應(yīng)避免使用float或real列。最好限制使用float和real列做> 或 < 的比較。

以上就是MySQL中float和decimal類型的作用是什么,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI