все дело в том что надо смотреть более глубже
так, целое у нас int, дробное - float(в паскале real)
при делении int на int - будет int
при делении float на float, float на int, int на float то в ответе будет float
при умножении int'а на 1.0 получаем float
ибо 123 - это int , а 123.0 это float
можно,даже лутче, все это делать явным приведением типов