Prosty program:
#include <stdio.h>
int main()
{
float x;
x = 1/5;
printf("%f", x);
getch();
return 0;
}
Zwrca mi:
0.000000
Męczę się z tym dużo czasu i nie moge skminić czemu tak się dzieje. Korzystam z Visual Studio 2010.
Prosty program:
#include <stdio.h>
int main()
{
float x;
x = 1/5;
printf("%f", x);
getch();
return 0;
}
Zwrca mi:
0.000000
Męczę się z tym dużo czasu i nie moge skminić czemu tak się dzieje. Korzystam z Visual Studio 2010.
Bo dzielisz dwie liczby całkowite. 1.0f/5.0f
(wystarczy, żeby jedna była typu zmiennoprzecinkowego)
Wynik dzielenia 1/5
(int/int
) to 0
(int
). I to, że potem zostanie on przypisany do zmiennej typu float
już niczego nie zmieni.
http://stackoverflow.com/questions/3602827/what-is-the-behavior-of-integer-division-in-c
Wystarczy, że jeden z argumentów będzie floatem - np. 1.0/5