Divisions avec précision réglable

5/5 (3 avis)

Vue 5 097 fois - Téléchargée 145 fois

Description

Voici un petit programme qui vous permet d'avoir le résultat de divisions avec la précision que vous voulez.
10 chiffres après la virgule ? c'est possible
10000 chiffres après la virgule ? c'est également possible

N'hésitez pas à commenter, noter et me conseiller dans l'optimisation.

Source / Exemple :


import sys,time

while True:
 
 # les deux nombres qui stockent le resultat
 entier = long(0)
 decimales = "" # en attendant de trouver mieux pour gerer 00210 par exemple

 nombre1 = raw_input("\nveuillez entrer le nombre : ")
 diviseur = raw_input("veuillez entrer le diviseur : ")
 compteur = int(raw_input("\nveuilllez entrer la precision : "))
 
 tailletotale = len(nombre1)+len(diviseur)
 
 nombre1 = long(nombre1)
 diviseur = long(diviseur)
 
 montemps=time.clock()
 
 
 # 1ere division entiere
 entier = nombre1//diviseur

 nombre1 %= diviseur

 # divisions des restes
 if nombre1 and diviseur != 0:
  while compteur > 0:
   if nombre1 < diviseur:
    nombre1 *= 10

   decimales += str(nombre1//diviseur)
   nombre1 %= diviseur
   compteur -= 1
  
   # recherche d'un infini             (experimental)
   #strdecimales = str(decimales)
   #infini = True
   
   #for lettre in strdecimales:
    #if strdecimales.count(lettre)%2 != 0:
     #infini = False
     #break

   #if infini == True and len(strdecimales) >= tailletotale:
    #compteur = 0 # pour arreter la prochaine boucle

  printemp = time.clock()-montemps
 printemp = time.clock()-montemps

 sys.stdout.write("\nresultat : "+str(entier)+","+decimales+"\n")
 print "\nle calcul a pris :", printemp

Conclusion :


les long sont très utiles !

Codes Sources

A voir également

Ajouter un commentaire Commentaires
svear Messages postés 3 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 17 juillet 2010
17 juil. 2010 à 19:36
Salut

Tu devrais te documenter sur la librairie "decimal"...
xeolin Messages postés 336 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 8 novembre 2011 2
23 févr. 2010 à 16:53
Pourquoi prendre la peine d'importer sys et de lancer sys.stdout.write
au lieu d'un simple print
xeolin Messages postés 336 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 8 novembre 2011 2
13 févr. 2010 à 22:36
Vraiment sympa, il y a de l'optimisation à faire, mais c'est intéressant ^^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.