64 位系統中 long double 的最大值是多少?

sizeof(long double) 為16個位元組,16(位元組)*8(位) =128,那麼long double最大應該是 2^128-1 才對啊,但是直接直接給long double 賦值的時候發現可達2^1024-1。請問這是為什麼。

明白了,int類型和float 類型的實現方式不一樣,上面的計算方式只適合int類型。《程序是怎麼樣跑起來的》3.4章有介紹浮點數。


就像兩個漢字可以表示的數可以高達「一億」


C 語言:

#include &
long double ld = LDBL_MAX;

C++ 語言:

#include &
long double ld = LDBL_MAX;

#include & long double ld = std::numeric_limits&::max();

.


因為這是浮點


抖個機靈:

#include &

long double inf = INFINITY;

真·最大值


誒,long double 在什麼編譯器下是128位呢?如果是128位,那分配給指數部分的是多少位呢?題主說的long double最多可以賦值位2^1024 - 1。這不是64位浮點數範圍內的值嗎?而且這也不是64位浮點數的上界吧


簡單的說浮點數存在內存里就是科學計數法

數字很大的時候只要高位所以不是一位對一位的


推薦閱讀:

有哪些適合學習的開源項目?
學c語言該怎麼入門?
如何查看大型工程的源代碼?
既然編譯器是一個軟體,那它是如何編譯自己的?
覺得自己程序寫得很差不敢寫了怎麼辦?

TAG:計算機 | C編程語言 | CC | 64位操作系統 | 浮點數 |