c語言中float輸出的結果從左往右有效數字是6位,但是我編寫這個小程式後怎麼就只有3位有效?望高手解答

時間 2021-09-11 22:24:15

1樓:

想要搞清楚這個問題,你需要了解float型別在記憶體中的儲存結構

符號位|指數|尾數

78.88在記憶體中的結構為

01000010 10011101 11000010 10001111

第一位為符號位,0

後面八位為指數位10000101

最後23位為尾數0011101 11000010 10001111

0,10000101,1.0011101 11000010 10001111

指數需要減去127才是真正的指數

10000101 - 01111111 = 00000110,是10進位制的6

1.0011101 11000010 10001111*(2^6)

=1001110.111000010 10001111

整數部分1001110轉換10進製為78

小數部分0.111000010 10001111轉換10進製為0.87999725341796875

所以你在輸出是按小數點後六位輸出為78.879997

2樓:

有效數字6位, 指 78.8799 ,有效數字精度到 6位,它含截斷誤差,截斷誤差 在第7位。

它不等於 78.88; 是因為 10進位制化2進位制,再2進位制化10進位制。引入了截斷誤差。

3樓:ac苗樹

單精度浮點型有效數字是7位 後面一般補齊6位小數

樓主用的是vc6.0 吧 用tc2.0 試試 或許和軟體對讀資料的處理有關 具體原因我也不明白 幫不了你

4樓:匿名使用者

zy im db haha

這個**的輸出結果為什麼只有六位小數啊

5樓:金色潛鳥

你可以自己定義要多少位小數,

例如:格式用 %.12lf 輸出的小數位 就是12 位。

你的編譯器 預設 %lf 輸出 6 位。

c語言 float型別保留幾位啊 怎麼確定

6樓:徜逸

float型別預設保留小數點後6位,若是要輸出一位或者其他位數,可以按照以下形式進專行輸出:

printf("%.(這裡輸入屬要輸出的位數)f",x);

如輸出一位:printf("%.1f",x);

c語言浮點型別的精確位數

例項#include

#include

int main()

7樓:匿名使用者

在c語言中來,float型別的資料預設保源留小數點後6位,不足6位的以0補齊,超過6位按四捨五入截斷。最多能保留7位有效數字,能絕對保證6位有效數字。

詳細可參考博文:網頁連結

**中的2.0其實就是2.000000,3.0其實就是3.000000,float型別的預設保留小數點後6位;

100/40結果應該是2.5,書中的2.0是側重和2.

5做區別,不是和2.000000做區別。同樣,下面的3.

0是要和3.14159做區別,而不是要和3.000000做區別。

所以,**中的2.0其實就是2.00000,3.0其實就是3.000000。

8樓:科技數碼答疑

float(也就是單精度浮點),預設有效位數7位。圖中的2.000000,有效數字就是7位

單精度,float,32位,有效位數為7位

雙精度,double,64位,有效位數15位

9樓:匿名使用者

%.2f就是保留小數點後兩位。數字代表保留幾位。

10樓:匿名使用者

i和j都是int型,兩個int型相除結果保留整數部分,即2,但是f是float型,結果保留6位

11樓:鄭原俊

以float型輸出時是保留小數點後6位

c語言中浮點數float和double輸出的問題

12樓:佼素花東倩

如果想讓結果更精確的話就選double,如果結果只要求小數,精確度不要那麼高,選

float就行了,小數點後兩位的輸出結果,double是首選

13樓:匿名使用者

不要多想。來

只要記得

float的尾數源位是23bit,對應7~8位十進位制數,所以有效數字有的編譯器是7位,也有的是8位

可以參考:http://hi.baidu.com/yu_xiyan/blog/item/461482dbb32d0c6dd1164edf.html

寫的比較清楚

14樓:匿名使用者

不管float,double,輸出時小數點後預設都是6位

不過不知道 你的double怎麼是7位。。。

15樓:革蓉竇和悅

答案是對的.什麼叫有效?單精度七位說明前七位是正確的而後面電腦會隨機輸出.雙精度一樣的道理

c語言中printf輸出float和double都用f麼scanf又

答 1.c語言中printf輸出float和double都可以用 f,而double型資料還可以用 lf。2.scanf當中若是對雙精度的變數賦值是必須是 後跟lf,而printf當中可以用 f也可以用 lf沒有限制。拓展資料 c語言中的格式控制符 d十進位制有符號整數 u十進位制無符號整數 f浮點...

c語言中float和double的區別

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

在c語言中如何輸出空格,在C語言中如何輸出空格

向日葵一樣暖 c語言輸出空格的語句為printf 為轉義字元,用printf 是不能輸出空格的。printf 函式是格式化輸出函式,一般用於向標準輸出裝置按規定格式輸出資訊。printf 函式的呼叫格式為 printf 格式化字串 參量表 格式輸出,它是c語言中產生格式化輸出的函式 在 stdio....