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