begin process at 2012 02 08 12:25:44
  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é :2 747 / 49

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

CALCULATRICE LIGNE DE COMMANDE - CALCUL EXACT
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

Source avec Zip BASE64 ENCRYPT/DECRYPT PYTHON BY MAXOU56800 par Maxou56800
Source avec Zip Source avec une capture TRIANGULATION par mecrosoft
Source avec Zip Source avec une capture COURBE DE BEZIER par mecrosoft
Source avec Zip Source avec une capture CALCUL D'AIRE D'UN TRIANGLE [INTERFACE GRAPHIQUE] par SeventhSon
Source avec Zip Source avec une capture SUITE DE FIBONACCI [INTERFACE GRAPHIQUE] par SeventhSon

 Sources en rapport avec celle ci

CALCULATRICE LIGNE DE COMMANDE - CALCUL EXACT par Clempython
Source avec Zip PALINDROMES, ANACYCLIQUES ET ANAGRAMMES par lespinx
Source avec Zip Source avec une capture CALCUL MENTAL par chuugar
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

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 gestion du temps de presence du personnel:rapatriement des données des pointeuses [ par etiennenono ] bonjour, Il ya environ deux mois que je vous ai posé un probleme concernant les pointeuses, mais en ce moment je n'avais vraiment aucune idée. Entre t Morpion 3D [ par lola413 ] Bonjour, Dans le cadre de mon cours de programmation j'ai pour exercice (a rendre pour le 23, youpi!) de réaliser un morpion 4*4 en 3D (alignement de Django calcul de conversion [ par jenny100 ] bonjour voila mon probleme j'ai un template qui affiche un champ avec une valeur numerique et un bouton submit une liste deroulante qui permet la s Division Euclidienne de deux polynomes [ par Mato14 ] Bonsoir, Je recherche un programme Python étant capable de faire une division euclidienne entre deux polynomes et de retourner le reste. Merci d'a


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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,608 sec (4)

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