Я знаю, что этот вопрос старый, но я наткнулся на него в поисках ответа на мой похожий вопрос. Я думал, что поделюсь очень полезным советом, который мне дали.
При преобразовании в int просто добавьте .5 к вашему значению перед понижением. Поскольку downcast для int всегда опускается до нижнего числа (например, (int) 1.7 = 1), если ваш номер равен .5 или выше, добавление .5 переведет его в следующий номер, и ваш downcast до int должен вернуть правильное значение , (например, (int) (1,8 + .5) = 2)
Надеюсь, этот ответ кому-нибудь пригодится.