Ⅰ c語言雙精度的問題
一看樓主就沒好好聽常量一節,嘿嘿。
c語言中,常量可以被規定類型。你規定123.456是什麼型,它就按什麼型儲存。只是單精度不夠時顯示不全。
我想樓主問的應該不是規定好類型再調用sizeof
而是直接對123.456應用sizeof
。
這時候你需要主要書上一個很小的細節:所有浮點型,在沒有規定的情況下默認為
double
型。
所以答案是:
double
型
Ⅱ 關於C語言 雙精度 單精度 的問題
該題其實考察的不是精度問題,是整數和浮點數之間的運算問題,結果沒有錯誤,以後向這種問題你可以上機運行一下呀,一看結果就什麼都明白了,首先你說的精度是指精確度,並不是保留小數的位數,這兩個概念不同,你可能弄混了,而輸出的時候,double和float默認都是保留六位,我就再這里給你解釋一下這兩個題目吧。 首先看第一題,題目的運算順序就是從左到右計算,a%3值為1,(int)(x+y)值為7,a%3*(int)(x+y)值為7,a%3*(int)(x+y)%2值為1,a%3*(int)(x+y)%2/4值要看他的賦值對象和輸出格式了,要是整形就直接捨去小數,要是浮點型就保留小數。 題目二就不用多解釋了吧,多思考,多學習,祝你成功!
Ⅲ c語言默認把小數視為雙精度
是的,代碼中出現的小數(具體的數)是浮點型常量,默認是double型的。如果後綴加F或者f,則存儲為float型
Ⅳ C語言單精度與雙精度問題
double
C;
scanf("%lf",&C);
printf("攝氏溫度是:%20.17lf\n",C);
floate
C,
scanf("%f",&C);
printf("攝氏溫度是:%20.17f\n",C);
這兩段程序運行時輸入
10.12345678912345,你可以看出單精度
和
雙精度的差別。
Ⅳ c語言里單精度和雙精度怎麼理解
單精度和雙精度顧名思義是兩種精度的不同劃分,單精度float是保證7位有效數字,double是保證16位有效數字。
例:(float)(10%3)
結果是1.000000即七位有效數字,(後面不一定全是0,計算機可隨機選擇數字,所以整數1不等於float或double的1)
(double)(10%3)
同理結果是:1.XXXXXXXXXX……後面有十五位的有效數字
雖然整數位都是1,但由於有效位數不同,即後面隨機派出的小數可能不同,所以二者理論上不同,實際比較不能用==,要用fabs()<1e-6.
Ⅵ 計算機C語言的單雙精度是什麼啊,怎麼區別啊
比如,11.234567這個就是
單精度
,單精度
有效位數
是前七位,當然不包括
小數點
,但是小數點後面默認保留6位
小數
,如果不夠6位用0填充。
12.23456789446547這個就是雙精度,雙精度默認保留14位小數。
雙精度比單精度表示浮點型(也就是小數)更精確一些,比如在需要
高精度
數據的地方就可以用雙精度。其它的前面都說了
都很對。
Ⅶ C語言 雙精度,單精度是怎麼計算的
單精度就是精度小點 范圍小 小數點後面的位數少
雙精度就是精度大點 范圍大 小數點後面的位數多
Ⅷ 關於C語言中單雙精度的問題
單精度浮點數在機內佔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不同,不要寫錯,能用單精度時不要用雙精度(以省內存,加快運算速度)。
Ⅸ c語言中什麼時候用雙精度什麼時候用單精度謝謝
類型 比特數 有效數字 數值范圍
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)
簡單來說,Float為單精度,內存中佔4個位元組,有效數位是7位(因為有正負,所以不是8位),在我的電腦且VC++6.0平台中默認顯示是6位有效數字;double為雙精度,佔8個位元組,有效數位是16位,但在我的電腦且VC++6.0平台中默認顯示同樣是6位有效數字(見我的double_float文件)
數據在32 6-7 -3.4*10(-38)~3.4*10(38) 用單精度
數據超出32 6-7 -3.4*10(-38)~3.4*10(38)用雙精度