Bonjour à tous,
Je poste ici pour comprendre les limites de ces 2 variables.
J'ai bien compris celles des variables d'entiers plus ou moins longs.
Exemple pour le byte qui vaut 8 bits, donc 256 valeurs possibles, comme on bosse en signé on en met 128 dans les negatifs et 128 dans les positifs.
Ainsi si je mets le code :
Il en est de même pour tous les autres types d entiers char,int, long...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 byte b = 128; // valeur acceptée. byte c = 130; // valeur refusée, on me cast.
Pour ce qui est des floats et des doubles, je galère un peu plus.
Ils répondent à la norme IEEE 754:
- le float est de simple précision (32 bits : 1 bit de signe, 8 bits d'exposant (-126 à 127), 23 bits de mantisse),
- le double est de double précision (64 bits : 1 bit de signe, 11 bits d'exposant (-1022 à 1023), 52 bits de mantisse),
Alors pourquoi quand je rentre le code:
Je ne me fais pas caster ? la valeur de la partie entière du nombre excède celle qui devrait être autorisée ? Est-ce que java utilise des bits non nécessaires de la mantisse pour allouer une plus grande valeur à ma partie entière que celle qui devrait être autorisée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 float f = 130.0f;
Partager