53 votes

Quelle est la différence entre le casting vers `float` et l'ajout de `f` comme suffixe lors de l'initialisation d'un `float` ?

Quelle est la différence entre

float f = (float) 99.32 ;

et

float f = 99.32f ;

Les deux ont été compilés et ont fonctionné avec succès.

6voto

Evdzhan Mustafa Points 745

La différence est que le littéral 99.32 est de type double, tandis que le littéral 99.32f est de type float.

La première instruction affecte le littéral float à une variable float. Rien de spécial.

La deuxième instruction convertit un double littéral en un flottant, et affecte le résultat à une variable flottante.

En ce qui concerne la norme, vous pouvez assigner un double littéral à une variable flottante, sans le couler explicitement vous-même. Dans ce cas, le cast implicite se produit. Par exemple :

float f = 99.32;

Vous pouvez même faire :

float f = (double) 10.5f;

et le côté droit est toujours implicitement converti en un flottant.

Veuillez noter que la plupart des compilateurs modernes optimisent ces éléments, de sorte que la représentation des flottants est généralement une question de style et de préférence. Soyez juste cohérent.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X