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?

5
задан Favolas 15 February 2012 в 16:30
поделиться