porque em C os tipos de variável são fortemente tipadas logo se você quer trabalhar com Float ou Double (que são números que usam a parte fracionária) é necessário fazer o casting nas divisões, por isso o ".0" depois dos números, caso esse casting de tipo de variável não seja feito o valor retornado pela divisão é somente a parte inteira desta, que neste caso iria retornar 0 pois computacionalmente a divisão de 1 por 3 é 0,333...4 (numeros de 3 depende do ponto flutuante do seu pc) logo sempre que for fazer uma divisão onde a parte não inteira é necessária utilize o ".0" no final dos números.A outras maneiras de fazer casting mas essa é a menos complicada para divisão.