Yo allí.C resultado de suma incorrecta con dobles
estoy aprendiendo C y tengo este código:
#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;
}
Con este código, la última impresión es siempre 0.00 pero es cambio
printf("Change is %4.2lf", change);
a
printf("Change is %4.2f", change);
Funciona como se esperaba. ¿Porqué es eso? ¿Dobles no están formateados como lf?
Gracias. Y en el scanf debería usar% f en vez de% lf? – Favolas
'% Lf' se usa para' long double'. '% lf' debe ser igual que'% f' en printf según el estándar C99. – interjay
No. en 'scanf','% f' es solo para 'float', y'% lf' es para double. (use '% llf' para escanear el doble largo) – asaelr