溫馨提示×

溫馨提示×

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

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

MySQL數(shù)據(jù)浮點(diǎn)類型的實(shí)際應(yīng)用操作

發(fā)布時(shí)間:2020-06-03 14:43:58 來源:網(wǎng)絡(luò) 閱讀:268 作者:三月 欄目:MySQL數(shù)據(jù)庫

下文主要給大家?guī)?a title="MySQL" target="_blank" href="http://kemok4.com/mysql/">MySQL數(shù)據(jù)浮點(diǎn)類型的實(shí)際應(yīng)用操作,希望這些內(nèi)容能夠帶給大家實(shí)際用處,這也是我編輯MySQL數(shù)據(jù)浮點(diǎn)類型的實(shí)際應(yīng)用操作這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。

1. 背景

  * MySQL支持的浮點(diǎn)類型中有單精度類型(float), 雙精度類型(double),和高精度類型(decimal),在數(shù)字貨幣類型中推薦使用高精度類型(decimal)來進(jìn)行應(yīng)用.

 * MySQL浮點(diǎn)型和定點(diǎn)型可以用類型名稱后加(M,D)來表示,M表示該值的總共長度,D表示小數(shù)點(diǎn)后面的長度,M和D又稱為精度和標(biāo)度,如float(7,4)的可顯示為-999.9999,MySQL保存值時(shí)進(jìn)行四舍五入,如果插入999.00009,則結(jié)果為999.0001。FLOAT和DOUBLE在不指定精度時(shí),默認(rèn)會(huì)按照實(shí)際的精度來顯示,而DECIMAL在不指定精度時(shí),默認(rèn)整數(shù)為10,小數(shù)為0。


2. 整數(shù)類型所需的存儲(chǔ)和值范圍

類型占用空間精度精確性
FLOAT4單精度精確到小數(shù)點(diǎn)后7位小數(shù)
DOUBLE8雙精度精確到小數(shù)點(diǎn)后15位小數(shù)
DECIMAL變長高精度精確到小數(shù)點(diǎn)后65位小數(shù)

 

3. 浮點(diǎn)數(shù)應(yīng)用中的 M / G * G (!=|=)(不一定等于) M

   M = 3.1415 G = 2.1542,統(tǒng)一精確到小數(shù)點(diǎn)后6位

   * 單精度(float)應(yīng)用

   * 創(chuàng)建float_test 表

mysql> CREATE TABLE float_test(
    -> m FLOAT(10,6),
    -> g FLOAT(10,6)
    -> )ENGINE=INNODB CHARSET=utf8mb4;
Query OK, 0 rows affected (0.06 sec)

   * 插入 m 與 g 的數(shù)據(jù)

mysql> INSERT INTO float_test SELECT 3.1415,2.1542;
Query OK, 1 row affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from float_test;
+----------+----------+
| m        | g        |
+----------+----------+
| 3.141500 | 2.154200 |
+----------+----------+
1 row in set (0.00 sec)

   * 進(jìn)行 M / G * G 運(yùn)算

mysql> SELECT m / g * g, m FROM float_test;
+--------------+----------+
| m / g * g    | m        |
+--------------+----------+
| 3.1414999962 | 3.141500 |
+--------------+----------+
1 row in set (0.00 sec)


   * 雙精度(double)應(yīng)用

   * 創(chuàng)建double_test 表

mysql> CREATE TABLE double_test(
    -> m DOUBLE(10,6),
    -> g DOUBLE(10,6)
    -> )ENGINE=INNODB CHARSET=utf8mb4;
Query OK, 0 rows affected (0.08 sec)

   * 插入 m 與 g 的數(shù)據(jù)

mysql> INSERT INTO double_test SELECT 3.1415,2.1542;
Query OK, 1 row affected (0.01 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select * from double_test;
+----------+----------+
| m        | g        |
+----------+----------+
| 3.141500 | 2.154200 |
+----------+----------+
1 row in set (0.00 sec)

   * 進(jìn)行 M / G * G 運(yùn)算

mysql> SELECT m / g * g, m FROM double_test;
+--------------+----------+
| m / g * g    | m        |
+--------------+----------+
| 3.1415000000 | 3.141500 |
+--------------+----------+
1 row in set (0.01 sec)


   * 高精度(decimal)應(yīng)用

   * 創(chuàng)建decimal_test 表

mysql> CREATE TABLE decimal_test(
    -> m DECIMAL(10,6),
    -> g DECIMAL(10,6)
    -> )ENGINE=INNODB CHARSET=utf8mb4;
Query OK, 0 rows affected (0.05 sec)

   * 插入 m 與 g 的數(shù)據(jù)

mysql> INSERT INTO decimal_test SELECT 3.1415,2.1542;
Query OK, 1 row affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM decimal_test;
+----------+----------+
| m        | g        |
+----------+----------+
| 3.141500 | 2.154200 |
+----------+----------+
1 row in set (0.00 sec)

   * 進(jìn)行 M / G * G 運(yùn)算

mysql> SELECT m / g * g, m FROM decimal_test;
+--------------------+----------+
| m / g * g          | m        |
+--------------------+----------+
| 3.1415000000000000 | 3.141500 |
+--------------------+----------+
1 row in set (0.00 sec)


4. 浮點(diǎn)類型應(yīng)用總結(jié)

  * 浮點(diǎn)數(shù)如果不寫精度和標(biāo)度,則會(huì)按照實(shí)際顯示

 * 如果有精度和標(biāo)度,則會(huì)將數(shù)據(jù)四舍五入后插入,系統(tǒng)不報(bào)錯(cuò)

 * DECIMAL如果不設(shè)置精度和標(biāo)度,剛按照默認(rèn)的(10,0)進(jìn)行操作,如果數(shù)據(jù)超過了精度和標(biāo)度值,則會(huì)報(bào)錯(cuò)。

  * 賬務(wù)、賬務(wù)系統(tǒng)必須要用DECIMAL類型確定精確與資金安全。


5. 總結(jié)


以需求驅(qū)動(dòng)技術(shù),技術(shù)本身沒有優(yōu)略之分,只有業(yè)務(wù)之分。

對(duì)于以上關(guān)于MySQL數(shù)據(jù)浮點(diǎn)類型的實(shí)際應(yīng)用操作,大家是不是覺得非常有幫助。如果需要了解更多內(nèi)容,請(qǐng)繼續(xù)關(guān)注我們的行業(yè)資訊,相信你會(huì)喜歡上這些內(nèi)容的。

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

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

AI