Problème de précision

Problème de précision - Python - Programmation

Marsh Posté le 12-04-2006 à 12:21:08    

Slt,
 
Je veux récupérer le résultat d'une division (ex.: 20/600=0.03333) mais lorsque je regarde le contenu de ma variable je n'ai que 0.0 pour un float.
 
Je ne devrais pas avoir une meilleure précision ???
Comment remédier à ce problème ??

Reply

Marsh Posté le 12-04-2006 à 12:21:08   

Reply

Marsh Posté le 12-04-2006 à 12:23:11    

20/600 = 0 en calcul entier. informatique ou pas. si tu veux faire du cacul flottant (approximation des réels) alors utilise des float comme opérandes et fait 20.0/600.0

Reply

Marsh Posté le 12-04-2006 à 12:25:48    

Ok merci
 
(J'ai l'habitude de C/C++ et il n'y a pas besoin de faire ça normalement)

Reply

Marsh Posté le 12-04-2006 à 12:40:42    

corpio a écrit :

(J'ai l'habitude de C/C++ et il n'y a pas besoin de faire ça normalement)


 

#include <stdio.h>
 
int main(void)
{
    printf("%f\n",20/600);
    return 0;
}


 

$ cc test.c
$ a.out  
0.000000
$


 
 [:petrus75]
 
 
EDIT : comme le dit Taz, un calcul entier retourne un résultat entier.

Message cité 1 fois
Message édité par Elmoricq le 12-04-2006 à 12:43:29
Reply

Marsh Posté le 12-04-2006 à 12:52:54    

Taz a écrit :

20/600 = 0 en calcul entier. informatique ou pas. si tu veux faire du cacul flottant (approximation des réels) alors utilise des float comme opérandes et fait 20.0/600.0


Elmoricq a écrit :

EDIT : comme le dit Taz, un calcul entier retourne un résultat entier.


En Python, ça va changer avec la mise en place de la PEP 238 "Changing the Division operator", qui est déjà disponible sous forme de __future__ import:

Code :
  1. >>> 3/5 # Classic integer division
  2. 0
  3. >>> 3//5 # Classic floordivision
  4. 0
  5. >>> 3./5 # Classic float division
  6. 0.59999999999999998
  7. >>> 3.//5 # Classic floordivision
  8. 0.0
  9. >>> from __future__ import division
  10. >>> 3/5 # "True Division"
  11. 0.59999999999999998
  12. >>> 3//5 # Floor division
  13. 0
  14. >>> 3./5 # "True division"
  15. 0.59999999999999998
  16. >>> 3.//5 # Floor division"
  17. 0.0
  18. >>>


Ce comportement passera (normalement) en comportement par défaut avec Python 3.


Message édité par masklinn le 12-04-2006 à 12:54:05

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed