И ни одного пояснения :)
Если вам нужно, чтобы работало так, как вы ожидаете - воспользуйтесь замечательным советом
Бобби Шифер .
Если объяснить на пальцах - есть два способа хранить числа с точкой - fixed point (фиксированная точка) и floating point (плавающая точка). У себя в примере вы используете тип данных с плавающей точкой (неспроста он называется float, а double - это float с двойной точностью, только и всего). Грубо говоря, числа с плавающей точкой представляются так: M*10^E, т. е. в памяти два значения M и E просто следуют друг за другом. К сожалению, компьютеры используют двоичную систему счисления, и далеко не всегда то, что можно просто записать в десятичной системе счисления - настолько же просто записать в двоичной, и наоборот. С учётом того, что объём памяти, выделяемый под хранение мантиссы, ограничен - она округляется до ближайшего двоичного представления, что после перевода назад, в десятичную систему счисления, и даёт такой, на первый взгляд, контринтуитивный результат.
Для разнообразия можете попробовать сложить очень маленькое и очень большое число.