1樓:匿名使用者
float型別的浮點數在計算機中是用二進位制的科學記數法表示的,十進位制小數到二進位制小數之間無法一一對映,所以計算機所表示的浮點數僅僅是實數的有限集合。
float在普通的32位機器上佔4個位元組,共32位。這裡面最高位為符號位,接下來8位次高位為科學記數法的指數字,剩下23位是尾數。
這裡123.456二進位制表示位11110111.011101001011110001.....
(後面還有很多位),表示成科學記數法就是1.111011101110100101111000 * 2^6,因為科學記數法整數字總是1,所以為了節約空間,這個為不用存下來,所以這個符號為1,8位指數儲存那個6,後面23位儲存小數字的23位,111011101110100101111000,然後這個數在輸出時轉成十進位制就是123.45600128173828125,所以輸出123.
456001就很明顯了。
簡單點說就是十進位制浮點數轉二進位制的時候可能有很多很多位,超過的部分就截斷了,使得儲存的值和實際的實數有乙個微小的差別。
2樓:匿名使用者
浮點表示的精度問題(單精度浮點數尾數字是有一定長度的,也就是說有最小的表示精度,超過這個範圍只能用最接近的表示了)可以參考一下ieee的浮點標準。
3樓:匿名使用者
應該是硬體吧,在記憶體中儲存的浮點數不是完全精確的吧
c語言中要在某個檔案中追加內容怎麼實現
4樓:吉祥二進位制
使用fopen函式開啟檔案,用fseek函式將檔案位置調整到檔案末尾,然後用fwrite函式寫入資料即可。下面的示例**,向1.txt的檔案中追加hello world的字串。
#include
#include
int main()
fseek(fp, 0, seek_end);
char sz_add = "hello world\n";
fwrite(sz_add, strlen(sz_add), 1, fp);
fclose(fp);
return 0;}
5樓:鍾玲公冶雪卉
要用c語言實現在檔案中某個具體的位置(比如說在「你好」這兩個文字之後)追加一些內容,請注意是具體的位置啊,請給出乙個例子
6樓:匿名使用者
我想箇思路啊。。。從檔案開頭讀取資料到程式,當資料符號你的要求,也就是為「你好」的時候,這時檔案指標的位置就確定了啊,用fopen開啟檔案,引數用"r+」 不知道行不行哦!去試一下吧
7樓:匿名使用者
如果是原始檔就有內容,要配合fseek()用,先將檔案指標指向檔案末(『你好』後),再用fopen()開啟,引數用a+.如果沒有內容,向檔案寫時候就可以a+,但是下次開啟時,檔案指標在檔案的開頭。你先試試。
還用我建議你不要這麼做,檔案指標很容易出錯,也不好操作,可以直接用操作檔案的基本幾個步驟做:讀檔案,操作,寫檔案。就可以了。
如何用c語言實現檔案先寫入部分資料,然後再讀取輸出在螢幕上
c語言實行資料的捨入誤差,新手求解釋
8樓:小喲西
比如你用float定義乙個變數:
float i;
然後將他賦值為1.123456789:
i = 1.123456789f;
然後輸出:
printf("%f",i);
結果會是1.1234567而不是1.123456789。因為float型別只能儲存小數點後7位數,8和9就捨去了。所以就產生了誤差。
9樓:匿名使用者
捨入誤差就是小數字數的取捨,具體在數值計算方法中學習。
10樓:匿名使用者
就是記不住那麼多位數,就把後面的扔掉了
c語言的輸出問題,乙個C語言的輸出問題
輸入必須按語句scanf d d d x,y,z 中的 d d d 形式輸入,三個數之間沒有任何分隔符,而題目輸入時有逗號,所以輸出值不確定 看好了,程式裡面是這麼輸入的 scanf d d d x,y,z 而你執行程式的時候,輸入資料格式是 25,13,10 這裡面逗號是關鍵,如果你的輸入是 25...
c語言中定義了整型資料但是輸出的時候我把它調為浮點型,執行輸出了不是想要的結果
原因很簡單,bai格式串中du 的 f 要求對應的引數必zhi須是浮點型,否則dao輸出就不正確版。你已權經看到了,輸出是 b 0.000000,不正確吧?整型資料調為浮點型必須使用 float b,而不是改一下格式串為 f 就能做到的。計算機發現目標資料型別錯誤,不讀取,歸零處理 c語言中,兩個整...
C語言中,如何輸入字元,如果是「y」,輸出「回答正確」,如果是「n ,輸出」回答錯誤「
char i cin i if i y cout 回答正確 else if i n cout 回答錯誤 大概是這樣的 vc工具下實現 include using namespace std void output 用scanf if.else printf 語句 別跟我說你沒學到。對了 tc3.0好...