Actually i is 0.69999999998 in it's floating representation.
When you assign i=0.7 in memory 0.7 cannot be represented in double precision as you would have thought.
So the comparison between float and double leads to type promotion and in that case i is less than 0.7 which is double.