W Javie literały bez przecinka są domyślnie typu int, więc 10/100 zwraca 0. Twój program wykonuje to tak:
(float)((10/100) * rata) --> (float)(0 * rata) --> (float)0.0 --> 0.0
Żeby działanie na literałach domyślnie zwróciło wartość zmiennoprzecinkową, przynajmniej jeden operand musi być typu zmiennoprzecinkowego. Można to zrobić na kilka sposobów:
1. Przez zapis zmiennoprzecinkowy
10/100.0
(przy czym wtedy otrzymujesz typ double)
2. Przez rzutowanie:
10/(float)100
3. Zapisując literał z przyrostkiem f lub F:
10/100F