Dlaczego w danym programie otrzymałem różne wyniki dla każdego z nich printf?
#include <stdio.h>
int main()
{
float c = 4.4e10;
printf("%f\n", c);
printf("%f\n", 4.4e10);
return 0;
}
I pokazuje następujące dane wyjściowe:
44000002048.000000
44000000000.000000
doublena floatma miejsce w języku C? A może chcesz wiedzieć, jakie wartości wynikają z konwersji, czyli jakie skutki ma konwersja? Albo coś innego?
Cużyliśmy printf("%f",x)dla floati printf("%lf",x)dla double. Kiedy coś się zmieniło? A jak by to wyraźnie wydrukować (singiel) float- printf("%hf",x)??
%lfw printf to to samo, co %f. floatArgument A w zmiennej jest konwertowany na doublekompilator, podobnie jak a shortjest konwertowany na an int.
4.4e10jest todoublestała, która jest przekształcanafloatpodczas inicjalizacji,cale zachowywana jakodoubleprzekazanaprintf. Jednakże, to polubisz też wiedzieć, że dodaniefprzyrostka sprawia mufloatstałej: Druk4.4e10fpokaże tę samą wartość, która wynika z inicjalizacjicdo4.4e10f. Odróżnianiefloatstałych oddoublestałych może być ważne przy wykonywaniu wysokiej jakości pracy z arytmetyką zmiennoprzecinkową.