lf n和 f n的區別

2025-02-22 18:40:13 字數 5916 閱讀 5289

1樓:生活仁昌

lf和%f的區別為:輸入不同、輸出不同、精度損失不同。

一、輸入不同。

1、%lf:%lf輸入資料。

時要求是float型別。

2、%f:%f輸入資料時要求是double型別。

二、輸出不同。

1、%lf:double型別以%lf格式輸出資料時不會自動轉成%lf格式,會導致輸入值錯誤。

2、%f:float型別以%f格式輸出資料時會自動轉成%f格式,不會導致輸入值錯誤。

三、精度損失不同。

1、%lf:單精度資料使用%lf格式會造輪檔舉成精度損失。

2、%f:雙精度資料蠢氏使用%f不會造成臘碧精度損失。

2樓:匿名使用者

當然有區別%lf匹配 double%f匹配 float你這樣使返豎羨用當然相同纖茄,一般輸出時不會有什麼區別,因為float的精度已經很高了,實際中很難用到float無法表示的數,但是一般從命令視窗或者從檔案中讀取資料時就會有問題!如果資料是漏拍double型的,那麼你scanf函式中必須用%lf給你舉個例子吧:#include ""

void main()

double d;

scanf("%f",&d);/執行後你再換成scanf("%lf",&d)試試,你就知道區別了。

printf("%f",d);

3樓:匿名使用者

f是單精度浮點型,輸出稿局散的時候要滿足6位小數。 %lf就是輸出數值總長度為l,整數鍵氏個數加小數個數,不足補空,右臘衝頂格起 %f和%lf對scanf來說有差別,%f用於float,%lf用於double 在printf中,%f用於float和double,因為float會自動轉為double,另外,%lf對於printf在c89標準中無定義。

4樓:牽著你的手

f和%lf分虧罩別是float型別和double型別用於格式化輸入輸出時對應的格式裂空源符號。

其中:float,單精度浮點型,對應%f.

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

在用於輸出時:

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

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

在用於輸入時:

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

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

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

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

5樓:徜逸

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

主要有一下四點專區別:

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

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

2、有效數字位數不同。

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

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

單精度浮點的表示範圍: ~雙精度浮點的表示範圍: ~4、在程式中處理速度不同。

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

6樓:張

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

7樓:網友

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

8樓:網友

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

9樓:網友

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

10樓:網友

float型別只有7位。

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

所以得變成longfloat

11樓:寳貝謙

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

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

12樓:網友

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

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

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

13樓:

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

14樓:斬月諸河

%f:float

lf:double

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

15樓:御板

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

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

16樓:網友

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

17樓:網友

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

%lf 與%f有什麼區別(給個簡單的例子說明)

18樓:網友

對於以小數形式輸出單、雙精度數,用%lf和%f輸出效果是一樣的,因為系統預設輸出的小數位只有6位,除非你指定了輸出的小數位數,比如:%會輸出15位小數)。字元l是用於長整型整數的!

在printf函式中%f和%lf有區別麼,為何答案是一樣的?

19樓:真王邪眼

其實用printf輸出無論用%f還是%lf都一樣,輸出精度的差別是由於資料本身型別造成的,例如用float定義了乙個7位以上的數,無論是用%f還是%lf輸出的有效位都是7位。而定義的double型別用%f和%lf輸出有效位數都是16位。

20樓:慕容冰綃

不一樣,如果b是double型的,其值如果大於float能表示的最大值,那麼用%f輸出b的時候就輸出不正常,因為double型比float所佔位元組要多,其實就和把double強制轉化為float可能丟失的道理一樣。

%lf和%f的區別是什麼?

21樓:網友

你所提的問題是不是c 語言程式設計裡的,我只是略懂一點。

f是浮點數的格式符,它所定義的是浮點型資料。

而 %lf是double型資料,l是scanf的附加格式說明符,l在printf的附加格式說明符裡可以加在d,o,x,u前面。

printf("%lf",x);和printf("%f",x);有什麼區別,還有下面還註釋了乙個問題,幫我解釋一下吧,謝謝。

22樓:網友

lf是長精度型別, 用於讀取(和顯示) double (雙精度)型別,f是精度型別, 用於讀取(和顯示) float (單精度)型別,在程式中, a, b均為雙精度型別, 因此如果用%f的話, 就會由於型別錯誤而導致讀取失敗, 因此a=0,b=0。

因而結果c = 0;

希望對你有幫助。

23樓:陽光上的橋

double變數必須使用lf,float變數必須使用f,否則結果都不正確。

24樓:皮匠同志

lf為雙精度輸出,有15-16位有效數字,f為單精度輸出,有6-7位有效數字。

c語言中printf函式中%f和%lf結果為什麼一樣

25樓:網友

***printf格式串中的%f到底是float還是double?實驗來證明!

最近在csdn上看到乙個網友寫下了類似如下**,想以小數格式輸出乙個整數:

int a = 0, b = 0;

printf("%f, %d", a, b);

可是執行結果並不盡如人意,%f欄位輸出了0,%d欄位輸出乙個較大的資料。

f為double型別,需要兩個位元組表示,所以,printf在遇到%f時即將a,b的兩個整型資料都讀了去,而到了需要輸出%d的時候,只能讀取b的下乙個單元,自然不是所期望的資料了。

但是有朋友說%f是float型別,%lf才是double型別,具此我特意查閱了msdn和linux man手冊,均沒有發現此類描述,在linux man手冊中,說明%lf為long double型別。

為了說明問題,我又做了幾個實驗:

實驗一,檢查%f需要讀取幾個位元組。

int a=0, b=0, c=5;

printf("%f,%d", a, b, c);輸出結果:

結論:%f讀取8個位元組,即兩個整型大小。

實驗二,檢查%lf需要讀取幾個位元組。

int a=0, b=0, c=5;

printf("%lf,%d", a, b, c);輸出結果:

結論:%lf也讀取8個位元組(也許和機器位寬有關,我是32位的機器)

實驗三,檢查printf讀取float型別資料。

float a=;

int b=5;

printf("%f,%d", a, b);輸出結果:

結論:float型別只佔4個位元組的資料,但前面實驗一已經證明%f會讀8個位元組,即double型別的寬度,所以,編譯器在將float型別引數入棧的時候,事先轉換成了double型別。

實驗四,再次證明實驗三的結論。

float a=;

int b=5;

printf("%d,%d,%d", a, b);輸出結果:

結論:a在入棧的時候,佔了8個位元組。

以上4步,我覺得可以證明%f是按double型別輸出的了,另外,我也知道了float型別在作為引數進行傳遞的時候,編譯器會先將它轉換成double型別。

26樓:網友

%f讀取8個位元組,%lf也讀取8個位元組。因此一樣。

f 浮點數(包括float和double)

lf為long double型別。

27樓:匿名使用者

精度不同就是保留的小數位數不同啊。雙精度保留的小數位數多。

28樓:網友

在執行這個printf語句時,系統知道需要將後面的兩個引數壓棧,由於程式中的寫法,預設是double型資料,所以系統在壓棧時,自動將第乙個資料進行了強制資料型別轉換,將double型資料轉換成float型資料壓棧了,printf才能正常執行。

如果你在引數中提供兩個float型資料或兩個double型資料,系統就不會進行這個強制轉換而出錯了。

29樓:

printf可以用%f輸出float和double兩種型別;scanf必須使用%f輸入float,%lf輸入double。

傅立葉變換求出Fn了以後,怎麼求振幅Fn和相位

看指數形式傅立葉就知道fn是什麼了。為第n個虛指數頻率分量 頻率 n倍基波頻率 的復振幅,包含幅度和相位。就是 fn n fn是複數的時候,fn 實部平方 虛部平方 再開方,n 虛部除以實部 再求反正切。fn反映了構成訊號的各個分量的幅度和相位,所以也稱為頻譜,跟這個類似 y t f1cos t 1...

Fn組合鍵怎麼用,鍵盤上的Fn鍵有什麼用

fn f1 睡眠待機 fn f2 關閉背 fn f3外接顯copy示bai fn f4寬屏切換du fn f5無線開關zhi 鍵盤上的fn鍵有什麼用 fn鍵能夠實現很多功能,如控制音量 開啟關閉攝像頭 螢幕亮度調節等。fn是 function 功能 的縮寫,fn鍵位於筆記本鍵盤最左下角第二個位置。現...

和的區別和的區別,和有什麼區別啊

前後來句子之間沒有明顯自 的因果關係。因果關係的意思比較強。少 同樣是 至少 但這個感覺比較中性,沒有褒貶,比如 少 部 a 接觸 一個物體中至少頭部與a接觸 這個白話點講就是你起碼怎樣怎麼樣,你哪怕怎樣怎樣也好等等。自分 部屋 自分 掃除 可以理解為 你可以不打掃客廳或衛生間之類,但至少 起碼 自...