7
votes

Euler # 26, comment convertir un numéro rationnel en chaîne avec une meilleure précision?

Je veux obtenir 1/7 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? XXX


1 commentaires

Je pense peut-être qu'il veut dire problème 26? projecturer.net/index.php?section=problèmes&id=26


4 Réponses :


6
votes

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


0 commentaires

3
votes

Utiliser Perl (parce que je ne peux pas écrire Python; -):

14285714285714285714285714285714285714285714285714


5 commentaires

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 est incorrecte.



2
votes

avec GMPY :

>>> import gmpy
>>> thefraction = gmpy.mpq(1, 7)
>>> hiprecfloat = gmpy.mpf(thefraction, 256)
>>> hiprecfloat.digits(10, 50, -10, 10)
'0.14285714285714285714285714285714285714285714285714'
>>> 


0 commentaires