❶ C 語言printf時,%f 與%lf 有什麼區別, 難道不是double 用%lf, float 用%f
我用VC++14.0和Dev C++5.11編譯後都沒出現你說的這種情況。
%l %lf對printf函數來說是沒有區別,因為傳遞給c語言可變參數函數的float類型變數都會被隱式提升為double, 所以這里的%f和%lf的效果是一致的。
但是對於scanf,%f和%lf的含義就不一樣了,因為傳遞的是指針。
一般建議對於float類型使用%f,double類型使用 %lf
❷ c語言中%f與%lf有什麼區別
%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 不會造成精度損失。
❸ c語言中%f與%lf有什麼區別
最簡單的區別:
%f
一般對應單精度類型
float
%lf
一般對應雙精度類型
double。
❹ %lf 與%f有什麼區別(給個簡單的例子說明)
%lf 與%f的區別有:
1、所能表示數的范圍不同
單精度浮點的表示範圍:-3.40E+38 ~ +3.40E+38,雙精度浮點的表示範圍:-1.79E+308 ~ +1.79E+308
2、有效數字位數不同
單精度浮點數有效數字保證6位,部分7位,雙精度浮點數有效數字保證15位,部分16位。
3、代表的數據類型不同
%f代表單精度浮點型數據(float),%lf代表雙精度浮點型數據(double)。在程序中處理速度不同一般來說,CPU處理單精度浮點數的速度比處理雙精度浮點數快。
例,以標識符列表方式定義函數:
#include <stdio.h>
void f(a, b)
int a;
float b;
{
printf("%d, %f ", a, b);
}
int main()
{
f();
f(1);
f(2, 3.14);
return 0;
}
❺ c語言里%f跟%lf有什麼區別
由於精度的原因,輸出%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處理單精度浮點數的速度比處理雙精度浮點數快。
❻ C語言問題%f和%lf的區別
由於精度的原因,輸出%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處理單精度浮點數的速度比處理雙精度浮點數快。
❼ c語言編程中%lf和%f,有啥區別,什麼double,長短型,求大神解釋
作輸出格式控制字元串時效果一樣,不說。作scanf的輸入控制字元串時,%lf是雙精度,8位元組;%f是單精度,4位元組;——也就是%lf對應double型就是,%f對應float型變數,用錯了運行結果就出錯。double的長型是10位元組,精確到19位,double型是8位元組,精確到16位,未見過「短double」型。但好多編譯器下寫long double仍是8位元組,就是說沒有區分長型和普通型……供參考。