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、要註意浮點數中一些特殊值的處理。