Ja tam.C wynik złej sumy z deblem
uczę C i mam ten kod:
#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;
}
Z tym kodem, ostatni wydruk jest zawsze 0.00 ale to zmienić
printf("Change is %4.2lf", change);
do
printf("Change is %4.2f", change);
Działa zgodnie z oczekiwaniami. Dlaczego? Podwaja nie są sformatowane jako lf?
Dzięki. I na scanf powinienem użyć% f zamiast% lf? – Favolas
'% Lf' jest używane dla' long double'. '% lf' powinno być takie samo jak'% f' w printf zgodnie ze standardem C99. – interjay
Nr w 'scanf','% f' jest tylko dla 'float', a'% lf' dla podwójnego. (użyj '% llf' do skanowania długich podwójnych) – asaelr