1樓:徜逸
由於精度的原因,輸出%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處理單精度浮點數的速度比處理雙精度浮點數快。
2樓:張
第6課時 c語言和c++的區別
3樓:匿名使用者
好好看看資料型別的概念吧,把前面的double換成float後面就可以用%f;%f代表按回實型輸入或輸出答,而%lf代表按雙精度輸入或輸出,怎麼會沒有關係呢?輸入時採取的格式不同,存在電腦裡的資料就不同,電腦裡同樣的資料(都是由0和1組成的相同的二進位制數)按不同的格式輸出結果也不會相同
4樓:匿名使用者
你之前已經定義到double了,最後的輸出值是按照表示式中的最多有效數字的形式定義的,也就是說如果你定義int a;doubule b;但是輸出是c=a+b,c則是double型
5樓:匿名使用者
你定義的double 當然配套的就要用%lf啊 至於%d 和%ld是一樣的 並不是你資料不存在就可以不用%lf
6樓:匿名使用者
float型別只有7位
因為是double型別乘一起去就不知道多少位了
所以得變成longfloat
7樓:_葉子妞妞
%f和%lf分別是復float型別和double型別用制於格式化輸入輸出時對bai應的格式符號。
其中:du
float,單精度浮點zhi型,對應dao%f.
double,雙精度浮點型,對應%lf.
在用於輸出時:
float型別可以使用%lf格式,但不會有任何好處。
double型別如果使用了%f格式可能會導致輸出錯誤。
在用於輸入時:
double 型別使用了%f格式,會導致輸入值錯誤。
float型別使用double型別不僅會導致輸入錯誤,還可能引起程式崩潰。
所以在輸入輸出時,一定要區分好double和float,而使用對應的格式符號。
8樓:寳貝謙
因為你定義的a,b,c都是double型吖…所以scanf()接收的a,b,c都是double型…double就是%lf咯…
如果用%f就是flout型咯…就跟定義的卟同了喔…
9樓:匿名使用者
f: float
lf:double
10樓:流星劃破夜空
#include
#include "math.h"
int main(void)
else
printf("it is not ********!\n");
return 0;
}試試這個
11樓:匿名使用者
你要輸出多少位,那按照下面這種輸出試試:
printf("%hf",yourfloat) ,其中,h用個小數替換掉回(用整數會成預設位數)
答,小數點後面的數字的值就是你列印yourfloat的小數點後面的位數,如"%0.15f" 、"%123.15f" 、"%0.000015f"都是列印小數點後15位
12樓:
看了你抄的**再結合你說的有時襲沒問題,
有時有問題,我判斷應該是你**中沒有將求出來的面積放入變數中儲存導致的。如果不放入變數中,你求出來的就是一個double型別的數值,此時你以float型輸出,由於型別不匹配所以程式自然報錯。如果你將這個值賦給一個變數則程式會自動分配一個記憶體給此變數,這樣當你以double輸出時程式會自動進行型別運算,自然也就不會出錯了。
13樓:斬月諸河
%f:float
%lf:double
因為你定義時用的是double型別,佔8個位元組而指定格式符是%f,對應的是float佔4個位元組,而資料型別位元組小的可以向大的轉換,反之則不行,所以會錯。
14樓:御板
scanf()語句:"%lf"用於double型別,"%f"用於float型別
printf(語句:"%f"既可用於double型別,又可用於float型別,但意思是指「保留6位小數」
15樓:匿名使用者
嘗試了一遍,還真是,十分感謝
16樓:匿名使用者
定義double 就用lf輸入輸出 定義float就用f輸入輸出
c語言中%d和%f還有%c有什麼區別
17樓:好程式設計師
%c,後邊的引數當字元處理;
%d,後邊的引數當整數處理;
%f,後邊的引數當浮點數處理。
18樓:匿名使用者
%d是int型資料的萬用字元
%f是float型資料的萬用字元
%c是char型資料的萬用字元
常用在printf等構建字串的函式中
19樓:墨陌沫默漠末
1、%d,d格式bai字元。用來輸出十進位制整數du,按整型數zhi據的實際長度輸dao出。
2、 %f ,用來輸出實版數(包括單雙精度),以權
小數形式輸出。
c語言中對於不同型別的資料用不同的格式字元,這兩個都是printf函式格式字元。
u格式符,用來輸出unsigned型資料,即無符號數,以十進位制形式輸出。
c格式符,用來輸出一個字元。
s格式符,用來輸出一個字串。
f格式符,用來輸出實數(包括單雙精度),以小數形式輸出。
e格式符,以指數形式輸出實數。
g格式符,用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出是佔寬度較小的一種),且不輸出無意義的零。
請問c語言中,%c %d %f %lf分別是什麼意思哦
20樓:匿名使用者
%c:是存取或者輸出一個字元
%d:是存取或者輸出一個整數
%lf: 是存取或者輸出一個長整型小數。
21樓:壞男孩
都是轉換符,%c要求將結果轉換為字元型; %d 要求轉換為十進位制型;%f 轉換為浮點型;%lf轉換為長浮點型。
22樓:小欽
這都是格式控制符,%c是格式化輸出字元型變數,%d格式化輸出整型變數,%lf和%f分別是格式化輸入和輸出浮點型變數
c語言f精確度的問題,C語言 f精確度的問題
float提供7位有效位,這七位包括小數點,後面不足六位小數補0。應為float型數佔4個位元組,一個位元組佔8位,總共就是32位,能達到這麼大的。f是預設的保留六位小數。如果要想得到允許位數x的小數,應為 xf 數值範圍是抄那麼大,並不襲代表精度是那麼多位,例bai如,你可du 以給float一個...
c語言問題,C語言問題C語言問題
沒有縮排,看來比較累 但是輸入一串字元以後要輸入結束標誌eof表示你的輸入結束了 如果你是unix,就用ctrl d,dos就用ctrl z include define maxline 1000 maximum input line length int getline char line,int...
c語言問題,C語言問題C語言問題
把檔案中所有逗號用空格替換。把if fp fopen goods.dat rb null 改成fp fopen goods.dat r null 把 feof fp 換成 0。把 一行刪除。以上3 4也可以在while前新增一行 解決 把printf s,2s,d,d n name,price,in...