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.
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.
La différence peut être optimisée, mais dans le premier cas, vous avez un double littéral qui est converti en flottant alors que vous avez un flottant littéral dans le second cas.
S'il n'est pas optimisé, vous obtiendrez un typecast dans le code du deuxième exemple.
Toutefois, dans certains cas, le résultat pourrait être légèrement différent (en fonction du mode d'arrondi). Si votre nombre ne peut pas être représenté exactement, vous obtiendrez dans le premier cas un double arrondi - d'abord lorsque vous arrondissez la représentation décimale à un double, puis lorsque vous arrondissez à un flottant, alors que dans le premier cas, vous arrondissez directement la représentation décimale à un flottant.
Les littéraux à virgule flottante sans suffixe sont, par défaut, de type double
type.
Ainsi, en déclarant float f = (float) 99.32;
vous lancez d'abord explicitement littéral 99.32
qui est de type double
à un float
et l'assigne ensuite à la variable f
.
En déclarant float f = 99.32;
fait la même chose, mais dans ce cas, le La conversion entre les types se fait implicitement.
Si vous voulez éviter la conversion implicite, vous devez utiliser l'option f
pour définir votre littéral (c'est-à-dire, float f = 99.32f;
)
Dans la ligne float f = (float) 99.32;
le littéral 99.32
est créé en tant que double
par défaut et est ensuite converti en un type float
.
Dans la ligne float f = 99.32f ;
le littéral est créé comme un float
en raison de la fin de la phrase f
en 99.32f
et aucun moulage de type n'est nécessaire.
Cette dernière solution serait analogue à celle consistant à écrire double f = 99.32;
comme vous auriez un double
étant affectée directement à une variable de type correspondant.
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.