Je veux obtenir 1/7 code> avec une meilleure précision, mais il a été tronqué. Comment puis-je obtenir une meilleure précision lorsque je convertit un numéro rationnel?
4 Réponses :
Vous pouvez multiplier le numérateur par un grand 10 ^ N et coller avec des entiers de précision arbitraires.
EDIT B> P>
Je veux dire: P>
> def digits(a,b,n=50): return a*10**n/b . > digits(1,7) 14285714285714285714285714285714285714285714285714L
Utiliser Perl (parce que je ne peux pas écrire Python; -):
14285714285714285714285714285714285714285714285714
En effet, tous les chiffres rationnels ont finalement répété.
Cette méthode simple fonctionne réellement. Je vais le convertir en Python et l'utiliserai. Merci.
@Sinan, je connais la répétition des chiffres, mais pour détecter les modèles répétés dans d'autres nombres rationnels (1 / D où d <1000), j'ai besoin de plus de précision.
@Keith Randall: Qu'est-ce que tu veux dire?
@Grokus: Je soulignais que la sortie de l'utilisation de %. 50f code> est incorrecte.
avec GMPY :
>>> import gmpy >>> thefraction = gmpy.mpq(1, 7) >>> hiprecfloat = gmpy.mpf(thefraction, 256) >>> hiprecfloat.digits(10, 50, -10, 10) '0.14285714285714285714285714285714285714285714285714' >>>
Python a une bibliothèque intégrée pour les calculs arbitraires de précision: décimale. Par exemple:
Merci. Je ne savais pas le module décimal. C'est le moyen le plus simple.
Je pense peut-être qu'il veut dire problème 26? projecturer.net/index.php?section=problèmes&id=26