我在那裏。C錯誤的結果與雙打
我學習C和我有這樣的代碼:
#include <stdio.h>
#include <stdlib.h>
int main()
{
double buyval, deliveredval, change;
printf("What's the buy value? ");
scanf("%lf", &buyval);
do{
printf("What's the value delivered? ");
scanf("%lf", &deliveredval);
if (deliveredval < buyval){
printf("Delivered value must be greater then buy value \n\n");
}
} while (deliveredval < buyval);
change = deliveredval - buyval;
printf("Change is %4.2lf", change);
return 0;
}
有了這個代碼,最後打印始終是0.00,但我改變
printf("Change is %4.2lf", change);
到
printf("Change is %4.2f", change);
它按預期工作。這是爲什麼?雙打未格式化爲lf?
謝謝。而在scanf我應該使用%f而不是%lf? – Favolas 2012-02-15 16:36:08
'%Lf'用於'long double'。根據C99標準,'%lf'應該與printf中的'%f'相同。 – interjay 2012-02-15 16:37:04
'scanf'中的編號,'%f'只用於'float','%lf'用於雙精度。 (使用'%llf'來掃描長雙精度) – asaelr 2012-02-15 16:37:39