C 中double long double表示的資料範圍一樣那他們有什麼區別

2021-03-27 18:09:55 字數 3594 閱讀 5549

1樓:匿名使用者

double、 long double的區別在於:

在很多編譯器中,double的精度不如long double。在vc6.0中double和long double一樣都是分配8個位元組,15位有效數字;但是在gcc中long double分配12個位元組,精確度自然就比double高出四個數量級。

double,即double float資料型別,是雙精度浮點型的資料。計算機中表示實型變數的一種變數型別。此資料型別與單精度資料型別(float)相似,但精確度比float高,編譯時所佔的記憶體空間依不同的編譯器而有所不同,通常情況,單精度浮點數佔4位元組(32位)記憶體空間,其數值範圍為3.

4e-38~3.4e+38,;雙精度型佔8 個位元組(64位)記憶體空間,其數值範圍為1.7e-308~1.

7e+308。

2樓:匿名使用者

據我所知,double和long double都是ansi c標準的浮點數。但ansi c並未規定long double的確切精度。所以對於不同平臺可能有不同的實現。

有的是8位元組,有的是10位元組,有的是12位元組或更多。一般來說long double的精度要高於double, 至少相等,就像int和long int一樣。但同一平臺也可能不一樣,比如ms自己的c/c++/vc++就不一樣。

好像以前16位的vc++中long double用10位元組,而win32就改用了8位元組,和double一樣了。ms保留long double型別的庫函式是為了相容,使用者能夠繼續使用以前編寫的**。ms也說明以後編寫程式時不要再使用asinl, acosl這樣的long double型別的庫函式。

但long double的資料型別還是要保留的,它畢竟是ansi c標準規定的資料型別。說不定哪天他的c/c++會把long double弄成16位元組的呢。

3樓:方小超1號

其實在vc6.0中double和long double一樣都是分配8個位元組,15位有效數字;但是在gcc中long double分配12個位元組。初學者基本上用不到long double。

4樓:匿名使用者

這個跟編譯器相關, vc6裡不用考慮它們的區別,所以一般不用細想這個。 liuyan12600 回答的比較詳細。

5樓:匿名使用者

有效數字的範圍long double的要比double的多 在c中 long double 的是18-19個 double 是15-16個

6樓:匿名使用者

gt;::max()

numeric_limits::max()numeric_limits::max()需要標頭檔案

7樓:6q號

參*** 12.我被你見,空空消逝了、暗中偷換的流年,然後危險。

c++中double和long double有什麼區別?

8樓:匿名使用者

二者均為浮點數型別,區別如下:

1 double型別為c++原始型別,所有編譯器均支援,而long double是c99規範增加的新型別,只有支援c99的編譯器才支援long double;

2 佔用大小不同,double佔8個位元組,long double根據編譯器實現不同,有佔用8,10,12位元組和16位元組四種;

在long double用8位元組實現時,long double 和double沒有其它區別。對於其它實現方式,還有以下三項區別:

1 運算速度不同,long double佔用位元組多,運算速度會慢一些;

2 精度不同,long double可以表示更大的精度;

3 表示範圍不同,long double可以表示更大範圍的浮點數。

9樓:起個名子真挺難

double 8 個位元組

long double 8 個位元組

long double 和 double 的表示方式相同。 但是, long double 和 double 是不同的型別。

double d(0);

long double ld(0);

size_t t1 = sizeof(d);

size_t t2 = sizeof(ld);

10樓:o丨_丨_丨

標準只保證long double 的精度不低於double(也就是說可以一樣),具體是怎樣得取決於你的編譯器

11樓:匿名使用者

引用的意思呢就是說返回變數的地址而非變數本身。比如一樓的返回值就是一個double型別的引用,這樣子函式結束之後儲存返回值的記憶體單元不會被銷燬,保留了它的地址。

例如下面這個例子:

int a=1,b;

b=a;

b++;

這個例子裡執行完之後a為1,而b為2。

但這個例子:

int a=1;

int *b;

b=&a;//指標b獲取了a的地址

(*b)++;

a和b的值都會變為2

12樓:胖子洲

一般來說是佔的位元組數不同,但對於現在的編譯器,比如vc,他們佔位元組數一樣,都是16

13樓:鷹弈

區別大了

從數學上說,double是實數(有範圍限

制),long是整數(有範圍限制)

實數包含整數

從系統分配位元組來說,double變數佔8個位元組,long佔4個位元組從計算機的儲存形式來說,區別就更大了,當然,樓主初學,不必瞭解那麼詳細 ,只要記住前兩點就行

c++中float、 double、 long double表示的資料範圍?

14樓:匿名使用者

numeric_limits::max()numeric_limits::max()numeric_limits::max()需要標頭檔案

15樓:藍色的仙道_彰

c++標準:

float:佔四個位元組,3.4*10(-38)---3.4*10(38);

double:佔八個位元組, 1.7*10(-308)---1.7*10(308);

longdouble型的範圍和double都是八個位元組,範圍相同。

上面的括號表示冪運算。

c語言中 float double long double 型別資料的數值範圍是怎麼計算的?

16樓:匿名使用者

按位數和符號位 來定的。。。。。。。。。。。

17樓:天天向上知識店鋪

float 和 double 如下:

long double則是由於編譯器不同而不同,ansi c標準規定了double變數儲存為 ieee 64 位(8 個位元組)浮點數

回值,但並未答規定long double的確切精度。所以對於不同平臺可能有不同的實現。有的是8位元組,有的是10位元組,有的是12位元組或16位元組。

規定long double的精度不少於double的精度,就像int和long int一樣。關於具體的編譯器的情況,可以列印 sizeof(long double)得知。

C 中5c 10c什麼意思,c 中 5c 10c什麼意思

問題分析 5c表示輸出一個字元,這個字元要佔用5個字元的空間,不足部分在前面補上空格。也就是輸出4個空格和這個字元。同樣 10c輸出9個空格和一個字元。問題擴充套件 代表意思有 兩種意思 1 格式化字串輸出 2 整數取餘 例項如下 1 目前printf支援以下格式的輸出,例如 printf c a ...

C 中的用法,C 中new的用法

除了樓上說的 還有 引用 和 取地址 的含義int a int b a 上述兩行語句執行完之後,a b表示同一個變數,對其中一個的操作相當於對另一個的操作 int a int b a 則b中儲存的是a的地址。對 b 的任何操作相當於對a的操作。表示引用,就是物件的另一個名字,例如 int i 10 ...

C 中pow函式,C 中pow(x,y)函式怎麼用?最好給舉個例子

2型別是整型,0.5屬於浮點數,而你的函式宣告裡面第一個引數是浮點數,第二個引數是整型的,int轉float double可以隱式轉換,編譯器允許這種轉換,但是float double不能隱式轉換成int,這樣可能會造成資料丟失,編譯器不允許,除非你強制轉換 在vc 6.0中原型為double po...