0.05 не представляется точно в floating point, если что. Как и константы в main. При делении и округлении в лоб ты получаешь что угодно (ну, почти). Используй какой-нибудь round, что ли.
ты понял почему это не баг?
Замени self.x / 0.05 на self.x * 20
А ничего, что там отрицательный флоат преобразуется в u32?
На текущий момент float as u32 - это undefined behavior если float находится за допустимыми пределами. В общем, да - это баг. https://github.com/rust-lang/rust/issues/10184
Обсуждают сегодня