Конвертировать в int потом надо, но конвертация будет работать предсказуемо.
На старых компиляторах обычно довольствовались (int)floor( x + 0.5 ) но в некоторых случаях это выражение будет давать отличный от round() результат, поэтому если округление точных половинок существенно - нужно писать чисто.