Your results make sense too:
Code:
itsme@dreams:~/C$ cat funky.c
#include <stdio.h>
int main(void)
{
unsigned char num;
double fval;
int ival;
for(num = 0;num < 8;++num)
{
fval = ((double)(num & 0x7) / 8 * 6) + 1;
ival = fval;
printf("num: %d, fval = %f, ival = %d\n", num, fval, ival);
}
return 0;
}
Code:
itsme@dreams:~/C$ ./funky
num: 0, fval = 1.000000, ival = 1
num: 1, fval = 1.750000, ival = 1
num: 2, fval = 2.500000, ival = 2
num: 3, fval = 3.250000, ival = 3
num: 4, fval = 4.000000, ival = 4
num: 5, fval = 4.750000, ival = 4
num: 6, fval = 5.500000, ival = 5
num: 7, fval = 6.250000, ival = 6
You can see why 1 and 4 get twice as many.