Précision : float et double

Résolu
BittarAhmad Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
BittarAhmad Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
Bonsoir à toutes et à tous,

Combien de chiffres après la virgule peut prendre un float? ainsi qu'un double ?

Je pense qu'un float peut prendre seulement 6 chiffres, mais à propos du double ?

Mille merci d'avance.

Amicalement,

3 réponses

BittarAhmad Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
Accessoirement, j'ai résolu mon problème.

de 6 chiffres après la virgule pour le type float
de 15 chiffres après la virgule pour le type double
de 17 chiffres après la virgule pour le type long double

Bien cordialement,
0
baladur13 Messages postés 47802 Date d'inscription   Statut Modérateur Dernière intervention   13 688
 
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
C'est bien plus compliqué que cela, en réalité cela dépend de l'amplitude de la valeur. Si ton nombre est proche de 1 tu auras effectivement plus ou moins ce que tu as dit, mais si tu as un nombre très grand (1 000 000 par exemple) ou très petit (0.000 001 par exemple) et bien le nombre de chiffres après la virgule s'adaptera... Sachant que les calculs se font en binaire, donc parler de chiffres après la virgule (sous entendu en décimal) n'a pas vraiment de sens !

Toute la logique de la chose est expliquée ici : IEEE 754

En Java tu peux utiliser la méthode Math.ulp pour connaitre la valeur de la précision, aussi bien en float qu'en double.

System.out.println(Math.ulp(1f)); // 1.1920929E-7
System.out.println(Math.ulp(1d)); // 2.220446049250313E-16

System.out.println(Math.ulp(1000000f)); // 0.0625
System.out.println(Math.ulp(1000000d)); // 1.1641532182693481E-10

System.out.println(Math.ulp(0.000001f)); // 1.1368684E-13
System.out.println(Math.ulp(0.000001d)); // 2.1175823681357508E-22
0
BittarAhmad Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
0