c/c++: float和double、long double

來源:互聯網
上載者:User

這兩天在寫程式,看了一些文章,轉過來備忘。原文地址是:

http://topic.csdn.net/u/20090716/10/ce4a7037-3c0d-40ae-af85-f702c78fcea3.html

單精確度浮點數在機內佔4個位元組,用32位二進位描述。
雙精確度浮點數在機內佔8個位元組,用64位二進位描述。

浮點數在機內用指數型式表示,分解為:數符,尾數,指數符,指數四部分。
數符佔1位二進位,表示數的正負。
指數符佔1位二進位,表示指數的正負。
尾數表示浮點數有效數字,0.xxxxxxx,但不存開頭的0和點
指數存指數的有效數字。

指數佔多少位,尾數佔多少位,由電腦系統決定。
可能是數符加尾數佔24位,指數符加指數佔8位 -- float.
數符加尾數佔48位,指數符加指數佔16位 -- double.

知道了這四部分的佔位,按二進位估計大小範圍,再換算為十進位,就是你想知道的數值範圍。

對編程人員來說,double 和 float 的區別是double精度高,有效數字16位,float精度7位。但double消耗記憶體是float的兩倍,double的運算速度比float慢得多,C語言中數學函數名稱double 和 float不同,不要寫錯,能用單精確度時不要用雙精確度(以省記憶體,加快運算速度)。

 

long double標準是規定它是128位浮點數據的,而double是64位浮點數據,但是編譯器不一樣也有差別,比如vc中它們都是64位的。總之long double >= double =64位是不會錯的。 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.