English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

%lf 要如何使用

#include
#include
int main(void)
{
char ch = 'c';
int i = 1;
float j = 2.0;
double a;
printf("This program show how to print variables\n");
printf("ch = %c\n ",ch);
printf("i = %d\n",i);
printf("j = %f\n",j);
printf("a = %lf\n",a);
system("pause");
return 0;
}


我在裡面加入的 dobule 但是裡面的小數點 並沒有變的比%f的多耶

請問我是哪裡打錯了嗎?

%f %lf 插在哪阿 為啥我打出來顯示的都一樣!?

2007-03-18 13:30:56 · 4 個解答 · 發問者 嵐光 1 in 電腦與網際網路 程式設計

4 個解答

%lf與%f在輸出的時候並沒有差別,但是在輸入的時候就會有差。
%f是 float 型態
而%lf是double 型態
float的數值範圍在10e的正負3.4倍之間,
而double數值範圍在10e308的正負1.8倍之間。
所以若您使用lf對應float型態的變數,那就會產生錯誤的結果。
至於出現的資料多寡,可以由輸出資料的格式化來作決定,
請看以下範例:
#include
#include
#include "stdio.h"
int main(){
float a=12.34567;
double b=12.34567;
printf("請先列印 f與 lf :%f,%lf\n",a,b);
printf("請先列印 lf與 f :%lf,%f\n",a,b);
printf("請先列印,以10.8的格式 f與 lf :%10.8f,%10.8lf\n",a,b);
printf("請先列印,以10.8的格式 lf與 f :%10.8lf,%10.8f\n",a,b);
printf("請輸入a,這次請以lf的格式輸入:\n");
scanf("%lf",&a);
printf("請輸入b,這次請以lf的格式輸入:\n");
scanf("%lf",&b);
printf("請列印 f與 lf :%f,%lf\n",a,b);
printf("請列印 lf與 f :%lf,%f\n",a,b);
printf("請輸入a,這次請以f的格式輸入:\n");
scanf("%f",&a);
printf("請輸入b,這次請以f的格式輸入:\n");
scanf("%f",&b);
printf("請列印 f與 lf :%f,%lf\n",a,b);
printf("請列印 lf與 f :%lf,%f\n",a,b);
system("pause");
return 0;
}

輸出結果如下:
請先列印 f與 lf :12.345670,12.345670
請先列印 lf與 f :12.345670,12.345670
請先列印,以10.8的格式 f與 lf :12.34566975,12.34567000
請先列印,以10.8的格式 lf與 f :12.34566975,12.34567000
請輸入a,這次請以lf的格式輸入:
12.45678
請輸入b,這次請以lf的格式輸入:
12.45678
請列印 f與 lf :0.000000,12.456780
請列印 lf與 f :0.000000,12.456780
請輸入a,這次請以f的格式輸入:
12.45678
請輸入b,這次請以f的格式輸入:
12.45678
請列印 f與 lf :12.456780,12.456781
請列印 lf與 f :12.456780,12.456781
請按任意鍵繼續 . . .

希望這樣的回答能解決你的疑惑
其實這在巨匠的電腦課程內就會有詳細的說明
請參考巨匠電腦以下兩門課程
(scanf與printf在c語言內使用較多):
LC1C語言程式設計C語言(入門指引)
LC2C語言實務應用C語言(實務應用)

如果學校日後以VC為程式語言課程所使用的軟體,
巨匠電腦也有以下的兩門課程介紹
VC1Visual-C++ 程式設計
VC2Visual-C++ 進階設計

2007-03-20 06:08:39 · answer #1 · answered by 阿福 3 · 0 1

琳琳,你永遠是這麼客氣:用竟見!
佩服!

琳琳是對的。
lf 是在 scanf 時才有差。

在 printf,要印出多位,用 %a.bf 把 a 和 b 調大。
但,別忘了:
 簡單來說:float 約有 6 位,double 約有 15 位有效。
 所以,印出超過有效位數的答案,沒太大的意思。
  除非你要看的,就是誤差!
  但,那有更好的方法去看。

2007-03-19 18:47:33 · answer #2 · answered by ? 7 · 0 0

什麼是 %lf ?





下面是一些例子
printf ("Characters: %c %c \n", 'a', 65);
printf ("Decimals: %d %ld\n", 1977, 650000);
printf ("Preceding with blanks: d \n", 1977);
printf ("Preceding with zeros: 0d \n", 1977);
printf ("Some different radixes: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
printf ("floats: %4.2f % .0e %E \n", 3.1416, 3.1416, 3.1416);
printf ("Width trick: %*d \n", 5, 10);
printf ("%s \n", "A string");



輸出:


Characters: a A
Decimals: 1977 650000
Preceding with blanks: 1977
Preceding with zeros: 0000001977
Some different radixes: 100 64 144 0x64 0144
floats: 3.14 3e 000 3.141600E 000
Width trick: 10
A string


2007-03-19 09:23:21 補充:
l 只用在 i, d, o, u, x and X
L只用在 e, E, f, g and G

所以應該使用 %Lf 才對

2007-03-19 05:18:29 · answer #3 · answered by Wow 6 · 0 0

%lf 是給 scanf() 系列用的

float f;
double d;

scanf("%f",&f);
scanf("%lf",&d);

2007-03-18 13:55:46 · answer #4 · answered by 鳳琳 5 · 0 0

fedest.com, questions and answers