Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1893 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Problème de précision

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de précision

n°1344902
corpio
Posté le 12-04-2006 à 12:21:08  profilanswer
 

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 ??

mood
Publicité
Posté le 12-04-2006 à 12:21:08  profilanswer
 

n°1344903
Taz
bisounours-codeur
Posté le 12-04-2006 à 12:23:11  profilanswer
 

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

n°1344905
corpio
Posté le 12-04-2006 à 12:25:48  profilanswer
 

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

n°1344911
Elmoricq
Modérateur
Posté le 12-04-2006 à 12:40:42  profilanswer
 

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
n°1344915
masklinn
í dag viðrar vel til loftárása
Posté le 12-04-2006 à 12:52:54  profilanswer
 

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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Problème de précision

 

Sujets relatifs
[SCRIPT WMI] Problème de permission avec Windows 98please ....help : probleme de set
[Resolu] probleme sur un scriptproblème de compatibilité JS Firefox / IE
probleme avec fscanf et EOFProbleme Recv() [Winsock]
Probleme oracleProblème Zoom JFreeChart
Probleme de précision avec les tracés java2D[java] problème avec la précision des nombres réels
Plus de sujets relatifs à : Problème de précision


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR