C語言的問題,關於double和float的區別

時間 2022-03-31 11:05:10

1樓:咖啡色de_回憶

型別 位元數 有效數字 數值範圍

float 32 6-7 -3.4*10(-38)~3.4*10(38)

double 64 15-16 -1.7*10(-308)~1.7*10(308)

long double 128 18-19 -1.2*10(-4932 )~1.2*10(4932)

double是雙精度浮點數,float是單精度的

也就是說double比float精度高些,double能精確15位,而float只能精確7位,所以float更容易出現因精度原因引起的誤差

但是float占用的記憶體少些,所以各有優缺點,使用應根據實際情況而定

2樓:匿名使用者

#include

main()

3樓:匿名使用者

我們在float 和double轉化的時候 編譯器總是會提示我們 會是失掉精度。

double(雙精度型)比float(單精度型)存的資料更準確些,佔的空間也更大

4樓:潘達

浮點數是科學計數法,就比如 1.23e10 意思是1.23*(10^10)(浮點數實際上是二進位制,只是打個比喻),但儲存時會把小數點和e都扣掉,變成 12310,他不代表乙個整數12310。。。。

你將乙個int型當浮點數解析自然得不到正確的數。。。。

5樓:009螃蟹

sum=sum+1.0/i是不是中國寫錯了呢??改成sum = sum + 1.0*i ????

關於c語言的乙個問題~~float和double的

6樓:匿名使用者

scanf("%f",&n);關鍵是這一句,格式輸入%f代表是float型別,double要用%lf

你可以試一下

7樓:

改成double的話,%f 要改成 %lf

c語言中double和float有什麼區別?

8樓:

你要是把第五行的float變成double,也應該在輸出語句改為:printf("%16f",c);

如只把第五行的float變成double,則在輸出時系統會將其進行強制轉換,出現錯誤,因為double比float範圍大,就像double是乙個大箱子,float是乙個小箱子,你現在把大箱子裡的東西硬往小箱子裡到,可能會裝不下的,就是這個道林。不過你可以將第七行這樣寫c=(float)5*(f-32)/9;

這樣也是正確的。

9樓:滄海雄風

因為 %f 和 float 是對應的

%d 和 int 是對應的

%lf 和 double 是對應的

不匹配就會出錯

10樓:匿名使用者

你定義的是float f,c,與的scanf("%f",&f);相互統一,

%表示輸入的型別,你定義是float型別,scanf輸入就要用相同的,

或者你定義double,那scanf也要選相應的型別,換成scanf("%lf",&f)

11樓:江湖三腳貓

double用%lf,部分編譯器裡都可以用%f

float和double精度不一樣。

12樓:匿名使用者

float是單精度

double是雙精度

如果你改成double了

printf(「%lf」,c);要改成lf

c語言中double和float的區別

13樓:苑聰澹臺海兒

float為單精度,佔4位元組(32位)的記憶體空間,它的數值有效範圍是-10的38次方到10的38次方,只表示7位有效數字。而double為雙精度,8位元組,正負10的308次方之間,能精確到16位。這應該就是他們的的最基本的區別吧。。。

14樓:曠俊空陽

這兩個不是函式,是資料型別.float是單精度實型,用4個位元組儲存

double是雙精度實型,用8個位元組儲存。在進行程式運算時,float型資料一律轉換為double型資料,為自動型別轉換。所以結果一樣。

但float,double兩種型別資料精度不同,float型有效數字位數為6~7位,double為15~16位,二者有區別

15樓:匿名使用者

兩個型別的精度不同。

double精度高,有效數字16位,float精度7位。但double消耗記憶體是float的兩倍,double的運算速度比float慢得多,在不確定的情況下還是盡量用double以保持正確性.

16樓:文婧

主要區別就是精度不同 都屬於浮點數 也就是小數 ,但精度不同 即取值的範圍不同,其中取值範圍double要比float大 ,因此所佔記憶體位數也不同 ,一般的來說 float 佔 4位元組 double 佔8位元組

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

c語言問題,17題為什麼答案是double不是float,這兩個有什麼區別

17樓:我愛你我的菜

sqrt函式返來回值是double。表達源式包含隱性轉換,規則就是盡量保證資料精度不丟失。

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

18樓:五岳持觴

系統默bai認小數是double,所以你呼叫dusqrt時,其實是這zhi個用法double sqrt(double),返還的dao是double型別版,double型別和其他類權

型運算的時候,系統會自動把數都變成double型別進行運算,返還的也是double。double是雙精度浮點數,一般佔8個位元組,float是單精度浮點數,一般佔4個位元組,int也是4個位元組。一般運算的時候,精度低的會向精度高的轉化,double>float>int

float佔4個位元組,也就是32位,儲存方式是1位符號位(1表示負數,0表示正數)+8位階碼(移碼表示,也就是2的幾次冪)+23位有效位(原碼表示)

double佔8個位元組,也就是64位,儲存方式是1位符號位+11位階碼+52位有效位。

c語言中float和double的區別!

19樓:隨便什麼名啦啦

區別:1、精度不一樣,float是單精度,double是雙精度;

2、表示小數的範圍不一樣,double能表示的範圍比float大;

3、double在記憶體中,佔8個位元組,float在記憶體中,佔4個位元組。

float:浮點型資料型別,float 資料型別用於儲存單精度浮點數或雙精度浮點數。浮點數使用 ieee(電氣和電子工程師協會)格式。

浮點型別的單精度值具有 4 個位元組,包括乙個符號位、乙個 8 位 二進位制指數和乙個 23 位尾數。由於尾數的高順序位始終為 1,因此它不是以數字形式儲存的。此表示形式為 float 型別提供了乙個大約在 -3.

4e+38 ~ 3.4e+38 之間的範圍。

double:雙精度浮點型,此資料型別與單精度資料型別(float)相似,但精確度比float高,編譯時所佔的記憶體空間依不同的編譯器而有所不同,是double float資料型別,c/c++中表示實型變數的一種變數型別。

20樓:艾素延可可

double與float的區別在於在

記憶體中存放資料時占用的記憶體不一樣,前者8

位元組,後者4位元組,也就是前者儲存的小數

位數比後者多一倍。舉例說明對於1.9999996666,按照float輸出,結果可能為1.

999999,如果按照double可能為1.999999,這是為什麼,因為c語言預設輸出小數字數都取6位,這時候看起來沒有區別,但是如果你進行格式控制,比如使用%.10,即小數保留10位,float輸出結果為1.

9999990000,而double輸出結果則為1.9999996666。

21樓:陰叡多尋芹

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

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

對程式設計人員來說,double

和float的區別是double精高,有效數字16位,float精度7位。但double消耗記憶體是float的兩倍,double的運算速度比float慢得多,c語言中數學函式名稱double

和float不同,不要寫錯,能用單精度時不要用雙精度(以省記憶體,加快運算速度)。

22樓:趙飆茂俊艾

數值範圍不一樣,double的範圍比float的範圍廣,還有佔位元組不一樣.而且double的精度要比float高,但是通常我們都用float,就好像我們定義整形變數是通常使用int而不是unsigned一樣。為的是讓計算機進行的計算的速度快點!

23樓:緱盛戚夜綠

沒什麼區別,就是乙個精度低一點乙個精度高一點,float是八位實數,double是十六位實數

24樓:斛載葛代雙

這個是它們的代表位數不一樣,長度不一樣就是他們的區別是最大的,

25樓:匿名使用者

float為單精度,佔4位元組(32位)的記憶體空間,它的數值有效範圍是-10的38次方到10的38次方,只表示7位有效數字。而double為雙精度,8位元組,正負10的308次方之間,能精確到16位。這應該就是他們的的最基本的區別吧。。。

26樓:

float的有效數字是六到七位 32位元

double的有效數字是十五到十六位 64位元

27樓:鄺筱詹綺云

精度不同,float是單精度,double為雙精度

28樓:匿名使用者

請您花至少乙個星期的時間閱讀ieee754的標準,這裡講不清楚的。

29樓:匿名使用者

totem01

回答的比較好

c語言float和double的區別

風若遠去何人留 占用空間不同 float 是4位元組 而double是8位元組 占用空間不同,就導致double可以表示的範圍 要比float大很多同時,double的精度 也比float要高很多。 都屬於浮點數 也就是小數 但精度不同 可以取值的範圍double要比float大所佔記憶體位數也不同...

c語言中float和double的區別

隨便什麼名啦啦 區別 1 精度不一樣,float是單精度,double是雙精度 2 表示小數的範圍不一樣,double能表示的範圍比float大 3 double在記憶體中,佔8個位元組,float在記憶體中,佔4個位元組。float 浮點型資料型別,float 資料型別用於儲存單精度浮點數或雙精度...

c語言double強制轉換,c語言 double強制轉換int

風若遠去何人留 這都被你發現了 首先 float double這類的資料是近似值 有精度問題 這一點你知道吧 也就是說列印出來的8.0000 未必是8.00000在你這個例子裡面 我改了一下 改為列印出20位小數 include int main b 5 0 puts b 你再執行一下看看 可以發現...