Из-за чего вещественные числа искажаются, как бороться с этим?
Из-за чего вещественные числа искажаются
https://ru.wikipedia.org/wiki/IEEE_754-2008
1) Вещественные числа хранятся приближённо, по крайней мере десятичное 0.3 (в отличие, например, от 0.5) не может быть точно представлено конечной дробью в двоичной записи.
2) При присваивании вещественного целому дробная часть отбрасывается, а не производится округление к ближайшему целому.

как с этим бороться? Округлять перед присваиванием целому (round, roundf, roundl).