MySQL類型float double decimal的區別

來源:互聯網
上載者:User

標籤:

float數實值型別用於表示單精確度浮點數值,而double數實值型別用於表示雙精確度浮點數值,float和double都是浮點型,而decimal是定點型;

MySQL 浮點型和定點型可以用類型名稱後加(M,D)來表示,M表示該值的總共長度,D表示小數點後面的長度,M和D又稱為精度和標度,如float(7,4)的 可顯示為-999.9999,MySQL儲存值時進行四捨五入,如果插入999.00009,則結果為999.0001。

FLOAT和DOUBLE在不指 定精度時,預設會按照實際的精度來顯示,而DECIMAL在不指定精度時,預設整數為10,小數為0。

1、CREATE TABLE test(f FLOAT(5,2) DEFAULT NULL,d DOUBLE(5,2) DEFAULT NULL,de DECIMAL(5,2) DEFAULT NULL);

2、DESC test;

3、INSERT INTO test(f,d,de) VALUES(1.23,1.23,1.23);

資料插入都正確

4、INSERT INTO test(f,d,de) VALUES(1.234,1.234,1.23);

資料插入都正確,但是f和d由於標度的限制,捨去了最後一位。

5、INSERT INTO test(f,d,de) VALUES(1.234,1.234,1.234);

資料也插入成功,但是有一個警告提示:

1 queries executed, 1 success, 0 errors, 1 warnings

Note Code : 1265
Data truncated for column ‘de‘ at row 1

 

6、將id1,id2,id3的精度和標度都去掉

ALTER TABLE test MODIFY f FLOAT;

ALTER TABLE test MODIFY d DOUBLE;
ALTER TABLE test MODIFY de DECIMAL;

DELETE FROM test;
DESC test;

7、INSERT INTO test(f,d,de) VALUES(1.234,1.234,1.234);

1 queries executed, 1 success, 0 errors, 1 warnings

Note Code : 1265
Data truncated for column ‘de‘ at row 1

f和d的資料正確插入,而de被截斷。

浮點數如果不寫精度和標度,則會按照實際顯示,如果有精度和標度,則會將資料四捨五入後插入,系統不報錯,定點數如果不設定精度和標度,剛按照預設的(10,0)進行操作,如果資料超過了精度和標度值,則會警告!

 

同時,對資料求SUM()時會出現不同的結果,float和double求SUM都會出現很多小數點,而decimal求SUM得到的是精準數值:

8、INSERT INTO test(f,d,de) VALUES(1.234,0.01,1.23);

資料都插入成功

9、SELECT SUM(f),SUM(d),SUM(de) FROM test;

理論上SUM(f)=3.698,SUM(d)=2.474,SUM(de)=3.46,但f,d都出現後面很長的一串浮點小數點。

 

MySQL類型float double decimal的區別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.