Voici mon code:
x = 1.0
y = 100000.0
print x/y
Mon quotient s'affiche sous la forme 1.00000e-05
.
Existe-t-il un moyen de supprimer la notation scientifique et de la faire apparaître comme
0.00001
? Je vais utiliser le résultat sous forme de chaîne.
Réponses:
mais vous devez gérer vous-même la précision. par exemple,
affichera uniquement les zéros.
les détails sont dans la documentation
Ou pour Python 3, l'ancien formatage équivalent ou le formatage de style plus récent
la source
En utilisant la version la plus récente
''.format
(n'oubliez pas de spécifier le nombre de chiffres après le que.
vous souhaitez afficher, cela dépend de la taille du nombre flottant). Voir cet exemple:comme indiqué ci-dessus, la valeur par défaut est de 6 chiffres! Ce n'est pas utile pour notre exemple de cas, donc à la place, nous pourrions utiliser quelque chose comme ceci:
Mettre à jour
À partir de Python 3.6, cela peut être simplifié avec le nouveau littéral de chaîne formaté , comme suit:
la source
f"{a:.{precision}f}"
Avec les nouvelles versions de Python (2.6 et versions ultérieures), vous pouvez utiliser
''.format()
pour accomplir ce que @SilentGhost a suggéré:la source
>>> print('{:f}'.format(0.000000123))
0.000000
'{0:.10f}'
Une autre option, si vous utilisez des pandas et que vous souhaitez supprimer la notation scientifique pour tous les flotteurs, consiste à ajuster les options des pandas.
la source
La plupart des réponses ci-dessus exigent que vous spécifiiez une précision. Mais que faire si vous voulez afficher des flottants comme celui-ci, sans zéros inutiles:
numpy
a une réponse:np.format_float_positional
la source
Cela fonctionnera pour n'importe quel exposant:
la source
Ceci utilise la réponse du capitaine Cucumber , mais avec 2 ajouts.
1) permettant à la fonction d'obtenir des nombres de notation non scientifique et de les renvoyer tels quels (vous pouvez donc envoyer beaucoup de données indiquant que certains des nombres sont 0,00003123 contre 3,123e-05 et ont toujours des fonctions.
2) prise en charge supplémentaire des nombres négatifs. (dans la fonction d'origine, un nombre négatif finirait par 0,0000-108904 à partir de -1,08904e-05)
la source
En plus de la réponse de SG, vous pouvez également utiliser le module Decimal:
la source
Si c'est un
string
alors utilisez le intégréfloat
dessus pour faire la conversion par exemple:print( "%.5f" % float("1.43572e-03"))
réponse:0.00143572
la source
Puisqu'il s'agit du meilleur résultat sur Google, je publierai ici après avoir échoué à trouver une solution à mon problème. Si vous cherchez à mettre en forme la valeur d'affichage d'un objet flottant et à la faire rester un flottant - pas une chaîne, vous pouvez utiliser cette solution:
Créez une nouvelle classe qui modifie la façon dont les valeurs flottantes sont affichées.
Vous pouvez modifier vous-même la précision en modifiant les valeurs entières dans
{:f}
la source
En utilisant 3.6.4, j'avais un problème similaire qui, de manière aléatoire, un nombre dans le fichier de sortie serait formaté avec une notation scientifique lors de l'utilisation de ceci:
Tout ce que j'avais à faire pour le réparer était d'ajouter 'f':
la source
À partir de la version 3.6 (fonctionne probablement également avec les versions 3.x légèrement plus anciennes), voici ma solution:
Le but du
precision
calcul est de s'assurer que nous avons suffisamment de précision pour éviter la notation scientifique (la précision par défaut est toujours de 6).L'
dec_precision
argument ajoute une précision supplémentaire à utiliser pour les points décimaux. Comme cela utilise len
format, aucun zéros insignifiant ne sera ajouté (contrairement auxf
formats).n
prendra également en charge le rendu des entiers déjà ronds sans décimale.n
nécessite unefloat
entrée, donc le casting.la source