В стандартном C литералы, такие как 19.4 и 9.7, считаются двойными, если не указано иное (например, 19.4F, 9.7F).
Компилятор будет использовать функцию целочисленного деления для вычисления x/ y (если оба x и y имеют тип int (совместимый)) или функцию деления с плавающей запятой на компьютер x / y, если по крайней мере один из x и y является типом с плавающей запятой.
float b = (int) 19.4 / (int) 9.7 // result = 2.000000, почему?
Вы запрашиваете приведение 19.4 к int и 9.7 к int, эффективно запрашивая компилятор для вычисления целочисленного деления19/9 = 2, который затем повышается для хранения в б.2 становится 2,0.
.PMCD.