- 論壇徽章:
- 0
|
浮點數(shù)與定點數(shù)
為了能夠引起大家的重視,在介紹浮點數(shù)與定點數(shù)以前先讓大家看一個例子:
mysql> CREATE TABLE test (c1 float(10,2),c2 decimal(10,2));
Query OK, 0 rows affected (0.29 sec)
mysql> insert into test values(131072.32,131072.32);
Query OK, 1 row affected (0.07 sec)
mysql> select * from test;
+-----------+-----------+
| c1 | c2 |
+-----------+-----------+
| 131072.31 | 131072.32 |
+-----------+-----------+
1 row in set (0.00 sec)
從上面的例子中我們看到c1列的值由131072.32變成了131072.31,這就是浮點數(shù)的不精確性造成的。
在mysql中float、double(或real)是浮點數(shù),decimal(或numberic)是定點數(shù)。
浮點數(shù)相對于定點數(shù)的優(yōu)點是在長度一定的情況下,浮點數(shù)能夠表示更大的數(shù)據(jù)范圍;它的缺點是會引起精度問題。
在今后關(guān)于浮點數(shù)和定點數(shù)的應(yīng)用中,大家要記住以下幾點:
1、浮點數(shù)存在誤差問題;
2、對貨幣等對精度敏感的數(shù)據(jù),應(yīng)該用定點數(shù)表示或存儲;
3、編程中,如果用到浮點數(shù),要特別注意誤差問題,并盡量避免做浮點數(shù)比較;
4、要注意浮點數(shù)中一些特殊值的處理。
本文來自ChinaUnix博客,如果查看原文請點:http://blog.chinaunix.net/u3/111930/showart_2185398.html |
|