64 位系統中 long double 的最大值是多少?
12-31
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;
#include &
long double ld = LDBL_MAX;
或
#include &
.
因為這是浮點數
抖個機靈:#include &
真·最大值
誒,long double 在什麼編譯器下是128位呢?如果是128位,那分配給指數部分的是多少位呢?題主說的long double最多可以賦值位2^1024 - 1。這不是64位浮點數範圍內的值嗎?而且這也不是64位浮點數的上界吧
簡單的說浮點數存在內存里就是科學計數法數字很大的時候只要高位所以不是一位對一位的
推薦閱讀:
※有哪些適合學習的開源項目?
※學c語言該怎麼入門?
※如何查看大型工程的源代碼?
※既然編譯器是一個軟體,那它是如何編譯自己的?
※覺得自己程序寫得很差不敢寫了怎麼辦?