mysql中的浮點數和定點數學習講解

1、浮點數和定點數:

規定小數點位置固定不變,稱為定點數。

小數點的位置不固定,可以浮動,稱為浮點數。

在計算機中,通常是用定點數來表示整數和純小數,分別稱為定點整數和定點小數。對於既有整數部分、又有小數部分的數,一般用浮點數表示。

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

2、在 mysql 中 float、double(或 real)是浮點數,decimal(或 numberic)是定點數。

float(M,S) M為全長,S為小數點後長度。

浮點數相對於定點數的優點是在長度一定的情況下,浮點數能夠表示更大的數據范圍;它的缺點是會引起精度問題。

mysql> CREATE TABLE test(c1 float(10,2),c2 decimal(10,2));
Query OK, 0 rows affected (0.03 sec)

mysql> INSERT INTO test VALUES(131072.32,131072.32);
Query OK, 1 row affected (0.01 sec)

mysql> SELECT * FROM test;
+-----------+-----------+
| c1        | c2        |
+-----------+-----------+
| 131072.31 | 131072.32 |
+-----------+-----------+
1 row in set (0.00 sec)

在今後關於浮點數和定點數的應用中需要註意以下幾點:

1、浮點數存在誤差問題;

2、對貨幣等對精度敏感的數據,應該用定點數表示或存儲;

3、編程中,如果用到浮點數,要特別註意誤差問題,並盡量避免做浮點數比較;

4、要註意浮點數中一些特殊值的處理。

發佈留言