begin process at 2010 07 29 15:51:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Math & Algorithmes

 > DIVISIONS AVEC PRÉCISION RÉGLABLE

DIVISIONS AVEC PRÉCISION RÉGLABLE


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Math & Algorithmes Classé sous :division, long, calcul, algorithme, virgule Niveau :Débutant Date de création :01/02/2010 Date de mise à jour :02/02/2010 19:33:31 Vu / téléchargé :1 321 / 40

Auteur : Clempython

Ecrire un message privé
Site perso
Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • 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
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 !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

02 février 2010 19:33:35 :
-Correction d'un bug dans les divisions. ex : 411/41 = 10,243902 au lieu de 10,0243902. Amélioration de l'algorithme qui devrait stopper la division si une répétition est détectée ex: 10/3 = 10.333333, trouvera 10.3(3infini)

 Sources du même auteur

ANTILOG, MORT AUX .LOG
Source avec Zip Source avec une capture VOCABULARY, RÉVISER SON VOCABULAIRE PÉDAGOGIQUEMENT
Source avec Zip Source avec une capture PROGRAMME POUR LES MOTS CROISÉS
Source avec Zip Source avec une capture LE MOT LE PLUS LONG PAR DICO

 Sources de la même categorie

CALCUL LIST DE NOMBRES PREMIERS par White541
TROUVER TOUT LES QUADRILATÉRES POSSIBLES AVEC N POINTS ALEAT... par Buenol
Source avec Zip GÉNÉRATION D'UN LABYRINTHE AVEC RECHERCHE DU CHEMIN LE PLUS ... par mehdicherti
Source avec Zip Source avec une capture LE CALCULATOR DE RAYGOLD VERSION 3.1 par raygold
Source avec Zip ALGORITHMIME GENETIQUE : PROBLEME DU VOYAGEUR DE COMMERCE par mehdicherti

 Sources en rapport avec celle ci

TROUVER TOUT LES QUADRILATÉRES POSSIBLES AVEC N POINTS ALEAT... par Buenol
Source avec Zip Source avec une capture LE CALCULATOR DE RAYGOLD VERSION 3.1 par raygold
SIMPLE COMPARATEUR IPV4 EN PYTHON par erebos
Source avec Zip Source avec une capture CALCUL DE RÉSISTANCES par amaury74
Source avec Zip Source avec une capture LE COMPTE EST BON par PythonLin

Commentaires et avis

Commentaire de xeolin le 13/02/2010 22:36:37 8/10

Vraiment sympa, il y a de l'optimisation à faire, mais c'est intéressant ^^

Commentaire de xeolin le 23/02/2010 16:53:09

Pourquoi prendre la peine d'importer sys et de lancer sys.stdout.write
au lieu d'un simple print

Commentaire de svear le 17/07/2010 19:36:25

Salut

Tu devrais te documenter sur la librairie "decimal"...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

calcul matriciel [ par evelockertrue ] &nbsp;salut,j'ai pour projet de&nbsp;d&#233;velopper un package contenant des fonctions &#232;crites en python et qui serviront &#224; optimiser le ca calcul matriciel simple [ par gwenc_hlan ] bonjour,    comment peut on faire sous Python du calcul matriciel simple ? (additionner, multiplier ou inverser des matrices). faut - il impérativeme Pour ne pas planter [ par franckysnow91 ] Bonjour à tous,Je programme un algorithme sous python et malheureusement, je fais souvent des boucles perverses et je ne réussi pas à m'en sortir. Je Problème de calcul simple [ par vaggarath ] Bonjour bonjour. Voilà j'ai un problème tout c*n, j'en suis sur... En fait je fais un boutton qui procède à un calcul suivant les valeurs rentrées au Algorithme Python parité [HELP] [ par Lyd3n ] Bonjour, j'ai besoin d'aide pour un programme que je dois rendre a un professeur qui m'a poser des contraintes : je ne dois utiliser que "[i]input[/i


Nos sponsors


Sondage...

CalendriCode

Juillet 2010
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,733 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales