Ciao . . . La funzione non ritorna il "vero" valore in float perchè prima di ritornare il valore, viene effettuato un cast ad int . . . Mi spiego meglio . . . Mettiamo caso che (esempio) contp e contlp alla linea del return contengono rispettivamente 2 e 3. Viene effettuata la seguente operazione 3/2 . . . Visto che gli operandi sono entrambi int il risultato (1.5) viene castato in int (1) e poi castato in float (1.0) per poi passarlo come valore di ritorno . . . Per risolvere potresti effettuare un cast in float per uno dei 2 operandi:
codice:
 return (float)contlp / contp;