Это очень распространенная ошибка, каждый программист делает это хотя бы один раз. Существует два вида операторов деления, они оба используют один и тот же символ, целое число и число с плавающей точкой. Компилятор выбирает, который он использует, основываясь на типах операндов. Если оба левый и правый операнды являются целыми, то вы получите интегральное деление. Инструкция idiv в машинном коде. Который обрезается до нуля и дает интегральный результат.
Как только хотя бы один операнд является плавающей точкой, вы получите инструкцию fdiv в машинном коде и результат, который вы ищете. Достаточно просто привести (float) или (double), как вы делали в своем вопросе. Вам нужно только разыграть одного из них. Или используйте литерал с плавающей точкой, например 200f или 200.0