Originariamente inviato da Freax
ti ringrazio, il problema è che non arrivo a concepire come possa uscire 0 da 1/3 se gli dico che voglio un double o un float in output.
Perchè non glielo stai dicendo nel modo giusto.
1 è una costante intera.
3 è una costante intera.

La divisione fra due numeri interi è un numero intero. 1 / 3 = 0.333. Ma 0.333 non è un valore intero. Quindi viene presa solo la parte intera di quel numero... che è 0. Solo dopo tu vai ad effettuare il cast... che a questo punto è del tutto inutile.

Tu devi far capire all'esecutore che quella non è una divisione fra interi, ma una divisione fra valori di tipo float (o double). Per questo devi castare uno dei due operandi... se uno dei due operandi non è intero, il risultato della divisione non sarà più considerato intero.

Il gioco funziona così: prima viene fatta la divisione e viene valutato il risultato. Dopo viene preso in considerazione il tuo cast.

Quindi, se vuoi ottenere un risultato float da una divisione, devi assicurarti che almeno uno dei due operandi sia float.

Ciao.