1樓:匿名使用者
首先解釋你的5個0的問題。五個零是printf語句出來的。%f格式,預設輸出小數點後6位數字,跟你資料型別沒有任何關係,這個很簡單吧。
如果想讓他輸出小數點後一個0,那就是%.1f,想輸出3個0,就是%.3f
這個明白了吧,很簡單。printf控制格式的問題。跟你float還是double還是int沒關
第二個問題,float 6~7 位有效數字的說法,到底怎麼回事。這個比較難懂,我是花了很長時間才搞懂的,不知道我講了,你能不能懂,計算機底層跟數學基礎不夠的話,很難理解到位。
我當時特別納悶的地方就在於,有效數字就有效數字,幹嘛還6-7位呢,為什麼不是一個確定的數。
它的深成次原因是這樣的。float所佔的位數是32位,為了表示浮點數,這32位,一部分被當做指數,一部分被當做底數。說白的,浮點數在計算機裡,如表示為a^b的形式。
那麼浮點數所能表示的精度,就跟底數的位數有關了。float這32位中,有一個符號位,8個指數位,跟23個底數位。
所以表示的精度就跟這23個底數位有關。具體的換算方法,請參考「ieee的浮點數表示法」這裡給你講得講到半夜。
我按照我通俗的理解,給你打個比方吧!
為什麼是6到7位,而不是一個確定的數,其實int值也有類似的問題。
假設,計算出的float表示最大範圍為1234567,注意,這裡是7位數,但是這裡存在一個問題,它可以精確表示七位數的前提是,這個七位數不大於這個範圍,有效數字為7,也就是當你想表示的數字小於1234567的時候,有效數字是7位。
假設你現在想表示7654321,它大於1234567,那麼就不能精確表達這個數,這時,有效數字就是6位,765432,最後一位不一定是精確表達的。
我這麼講,你能聽懂不?
2樓:慕桖以南
這個。。。
首先,格式化輸出的規則你要去了解。(c語言)然後,關於int和float在計算機內部的儲存,表達方式也要去了解。(基本)
需要一本基本的系統的瞭解,所以這裡怎麼說你也不會理解透徹。
去參考一本書吧。
《電腦科學概論》11版
1.6 整數儲存
1.7 小數的儲存。
3樓:
不是,folat型別的,print會預設輸出小數點後6位,當然輸出幾位可以自己控制。
4樓:匿名使用者
是printf的原因,預設格式就是小數點後6個0
c語言報錯的問題?
5樓:匿名使用者
你的程式錯誤,是在
cout << 「enter the temperature in celsius:」;
cout << 「fahrenheit value is:」;中用了中文狀態下的雙引號。
#include
#include
#include
using namespace std;
int main(int nnumberofargs, char* pszargs)
以上程式正確,可以執行。
如果還不行,那就是編譯器的問題。建議:用vc2008,c-free或vc2010.
微軟已停止對vc6.0進行更新了。(開始不習慣很正常,成為高手後會喜歡例如vc2010的)。
關於c語言問題,急!!高手請進!
6樓:
s是指標的指標,在這裡是指向主函式的p指標的指標;**s就是主函式p所指地址的內容;p是指向一個動態儲存地址,這是向系統要求配給的(int *)malloc(sizeof(int)),具體操作在教程裡可以找到;
fun(int **s,int p[2][3])
p[2][3}即a[2][3];**s=p[1][1]的意思是把p[1][1](其值為9(第二行第二列的數))即a[1][1]的內容賦予**s指向的儲存空間,也就是主函式中p的值為9了,所以輸出值為9。
c語言問題,急!賞,c語言問題,急!賞
下面的程式是修改過的,已經在vc環境中除錯成功,你要算fahr,可你在輸出之前算得卻是celsius,錯誤出在這裡。至於其他的修改都是多餘的。include void main celsius 5 9 fahr 32 括號之間缺了些什麼吧.而且只能把已賦值的變數賦給沒賦值的變數哦 也就是說只能fah...
c語言有關sizeof的問題,c語言關於sizeof的問題
a 和 0 都是字元型,一個字元型一個位元組,sizeof是算佔多少記憶體,a 0 是轉化為int進行處理的,計算後是一個int型。int是整形,有的編譯器佔2個位元組,有的佔4個。所以是2,1 因為 a 和 0 都表示的是字元,而字元型常量佔據的記憶體空間為1位元組,即sizeof a 1,siz...
C語言問題急請求幫助,C語言問題!!!急!!!請求幫助
include int main 把100 150的偶數存入陣列 for i 0,j 100 j 150 i j 2 for i 0 i 26 i 行數是偶數的情況 else printf 6d arr i 個數 1 row count 每記5個數,打個回車,行數 1 if row count 5 ...