c語言f精確度的問題,C語言 f精確度的問題

2021-03-10 19:59:18 字數 3623 閱讀 9058

1樓:愛問我先行

float提供7位有效位,這七位包括小數點,後面不足六位小數補0。

應為float型數佔4個位元組,一個位元組佔8位,總共就是32位,能達到這麼大的。

2樓:詭其辭

%f是預設的保留六位小數。如果要想得到允許位數x的小數,應為「%.xf」,

3樓:藍火

數值範圍是抄那麼大,並不襲代表精度是那麼多位,例bai如,你可du

以給float一個值2407105712037401273401274012784,很zhi大吧?但dao

是顯示的時候,它則顯示不了那麼多位,會用2.407105e24 來表示

4樓:匿名使用者

%f預設用0填充精度,float有這麼大的數,但是精度有限

5樓:匿名使用者

7位有效bai位是指 在進行數學計算du時保留7位小數位進行計算zhi

printf("%f",123.54);這句話是以單精dao度浮點內格式輸出

預設是輸容出6位小數 如果你要控制輸出的小數位數 可以用格式控制來實現

例如你就想輸出2位小數 可以這麼寫

printf("%.2f",123.54); 精確到個位的話 printf("%.0f",123.54);

其他格式控制還請你翻下書 有很多功能的

6樓:匿名使用者

精確度和顯示範圍是兩回事

7樓:匿名使用者

float 共32位,使用bai最高位作為du符號位,隨後zhi8位表示冪,剩下23位儲存小數dao。並且假定所有回

的小數都是答1.?,故不儲存個位上的1,23位全都用來儲存小數。

由於8位表示冪,所以數量級可以達到10的38次方。注意,對於8位冪所表示的數字(0->255),在求值前將減去127,這是為了表示10的負數冪。

精度是由用於儲存小數的位數決定的,對於float,fpu(使用10個位元組表示浮點數)將從第七位到第六位「四捨五入」,故float列印時將顯示6位小數。當然,你可以顯示指定列印的位數。

c語言問題%f和%lf的區別

8樓:徜逸

由於精度的原因,輸出%lf和%f的資料不同,可能會造成錯誤。

主要有一下四點專區別:

1、代表的資料型別不同屬

%f代表單精度浮點型資料(float),%lf代表雙精度浮點型資料(double)。

2、有效數字位數不同

單精度浮點數有效數字保證6位,部分7位,雙精度浮點數有效數字保證15位,部分16位。

3、所能表示數的範圍不同

單精度浮點的表示範圍:-3.40e+38 ~ +3.40e+38,雙精度浮點的表示範圍:-1.79e+308 ~ +1.79e+308

4、在程式中處理速度不同

一般來說,cpu處理單精度浮點數的速度比處理雙精度浮點數快。

9樓:張

第6課時 c語言和c++的區別

10樓:匿名使用者

好好看看資料型別的概念吧,把前面的double換成float後面就可以用%f;%f代表按回實型輸入或輸出答,而%lf代表按雙精度輸入或輸出,怎麼會沒有關係呢?輸入時採取的格式不同,存在電腦裡的資料就不同,電腦裡同樣的資料(都是由0和1組成的相同的二進位制數)按不同的格式輸出結果也不會相同

11樓:匿名使用者

你之前已經定義到double了,最後的輸出值是按照表示式中的最多有效數字的形式定義的,也就是說如果你定義int a;doubule b;但是輸出是c=a+b,c則是double型

12樓:匿名使用者

你定義的double 當然配套的就要用%lf啊 至於%d 和%ld是一樣的 並不是你資料不存在就可以不用%lf

13樓:匿名使用者

float型別只有7位

因為是double型別乘一起去就不知道多少位了

所以得變成longfloat

14樓:_葉子妞妞

%f和%lf分別是復float型別和double型別用制於格式化輸入輸出時對bai應的格式符號。

其中:du

float,單精度浮點zhi型,對應dao%f.

double,雙精度浮點型,對應%lf.

在用於輸出時:

float型別可以使用%lf格式,但不會有任何好處。

double型別如果使用了%f格式可能會導致輸出錯誤。

在用於輸入時:

double 型別使用了%f格式,會導致輸入值錯誤。

float型別使用double型別不僅會導致輸入錯誤,還可能引起程式崩潰。

所以在輸入輸出時,一定要區分好double和float,而使用對應的格式符號。

15樓:寳貝謙

因為你定義的a,b,c都是double型吖…所以scanf()接收的a,b,c都是double型…double就是%lf咯…

如果用%f就是flout型咯…就跟定義的卟同了喔…

16樓:匿名使用者

f: float

lf:double

17樓:流星劃破夜空

#include

#include "math.h"

int main(void)

else

printf("it is not ********!\n");

return 0;

}試試這個

18樓:匿名使用者

你要輸出多少位,那按照下面這種輸出試試:

printf("%hf",yourfloat) ,其中,h用個小數替換掉回(用整數會成預設位數)

答,小數點後面的數字的值就是你列印yourfloat的小數點後面的位數,如"%0.15f" 、"%123.15f" 、"%0.000015f"都是列印小數點後15位

19樓:

看了你抄的**再結合你說的有時襲沒問題,

有時有問題,我判斷應該是你**中沒有將求出來的面積放入變數中儲存導致的。如果不放入變數中,你求出來的就是一個double型別的數值,此時你以float型輸出,由於型別不匹配所以程式自然報錯。如果你將這個值賦給一個變數則程式會自動分配一個記憶體給此變數,這樣當你以double輸出時程式會自動進行型別運算,自然也就不會出錯了。

20樓:斬月諸河

%f:float

%lf:double

因為你定義時用的是double型別,佔8個位元組而指定格式符是%f,對應的是float佔4個位元組,而資料型別位元組小的可以向大的轉換,反之則不行,所以會錯。

21樓:御板

scanf()語句:"%lf"用於double型別,"%f"用於float型別

printf(語句:"%f"既可用於double型別,又可用於float型別,但意思是指「保留6位小數」

22樓:匿名使用者

嘗試了一遍,還真是,十分感謝

23樓:匿名使用者

定義double 就用lf輸入輸出 定義float就用f輸入輸出

c語言問題f和lf的區別,C語言問題 f和 lf的區別

由於精度的原因,輸出 lf和 f的資料不同,可能會造成錯誤。主要有一下四點專區別 1 代表的資料型別不同屬 f代表單精度浮點型資料 float lf代表雙精度浮點型資料 double 2 有效數字位數不同 單精度浮點數有效數字保證6位,部分7位,雙精度浮點數有效數字保證15位,部分16位。3 所能表...

c語言中的f格式符,C語言中的 f格式符

f在輸入輸出使用,它表示輸入或輸出的數為浮點數 即可以帶小數的數 如 float a scanf f a 就可以輸入3.15 a 3.15 同理 d,表示輸入或輸出的數為整數。c表示輸入或輸出的數為字元。不曉得你上個問題是什麼,但是 f是輸出一個實數,並不需要制定輸出寬度的。他的小數位佔6寬度,小數...

c語言關於010 2f和0 ,C語言關於 010 2f和0 10 2f

printf 0 10.2f n f 輸出 000123.46 格式bai裡10 表示輸出數總du佔位是10個字元.2 是小數2位。zhi計入 四舍五dao入。格式裡 號表示 輸出 負數帶專 號,輸出 正數屬帶 號 格式裡 0 表示 用 0 填滿 左邊空格。printf 010.2f n f 輸出 ...