1.0 di default è doppio, se il valore corretto è 1.2 c'è un cast implicito e il valore viene convertito da doppio a float (il cast non è un'operazione di runtime). In questo caso non è importante chiamarlo 1.2f. I programmatori lo maltrattano principalmente, ma ci sono casi in cui è davvero importante.
Ad esempio:
float var= 1.0e-45;
NSLog(@"%d",var==1.0e-45);
Questo stampa zero, perché 1.0e-45 è troppo piccolo per essere immagazzinata in una singola precisione floating point variabile, così diventa uguale a zero. Scrivere var == 1.0e-45f cambia il risultato.
L'utilizzo degli specificatori di formato è importante soprattutto durante la scrittura di espressioni e, poiché il valore di sinistra è un float, ci si aspetta che anche l'espressione venga trattata come float, ma non è ciò che accade.
Un caso più eclatante è quando si utilizza l'identificatore l formato su un numero che viene spostato così tanto da diventare a zero, e ottenere sorpreso per il risultato:
long var= 1<<32; // I assume that an int takes 4 bytes and a long 8 bytes
Il risultato è pari a zero, e la scrittura 1l < < 32 cambia completamente il risultato.
fonte
2013-03-22 23:54:44
Non so di un punto in un incarico di dichiarazione. Penso che la f possa essere utile se non si utilizza la costante in un termine costante (ad esempio 'someFloat = 3.0 * someOtherFloat' potrebbe effettivamente portare a conversioni inutili a seconda del compilatore.) Tuttavia non risponde alla domanda. –
@MaxE. Io vedo. Questo è utile, grazie! – fumoboy007
La leggibilità non deve essere scontata. – GoZoner