How to convert int to float in C?
integer division in C truncates the result so 50/100
will give you 0
If you want to get the desired result try this :
((float)number/total)*100
or
50.0/100
Integer division truncates, so (50/100)
results in 0. You can cast to float
(better double
) or multiply with 100.0
(for double
precision, 100.0f
for float
precision) first,
double percentage;
// ...
percentage = 100.0*number/total;
// percentage = (double)number/total * 100;
or
float percentage;
// ...
percentage = (float)number/total * 100;
// percentage = 100.0f*number/total;
Since floating point arithmetic is not associative, the results of 100.0*number/total
and (double)number/total * 100
may be slightly different (the same holds for float
), but it's extremely unlikely to influence the first two places after the decimal point, so it probably doesn't matter which way you choose.