Il s'agit d'utiliser Réponse de Captain Cucumber mais avec deux ajouts.
1) permettre à la fonction d'obtenir des nombres en notation non scientifique et de les renvoyer tels quels (ainsi, vous pouvez envoyer un grand nombre de données indiquant que certains des nombres sont 0.00003123 ou 3.123e-05 et faire en sorte que la fonction fonctionne.
2) ajout d'un support pour les nombres négatifs. (dans la fonction originale, un nombre négatif se terminait comme 0.0000-108904 de -1.08904e-05)
def getExpandedScientificNotation(flt):
was_neg = False
if not ("e" in flt):
return flt
if flt.startswith('-'):
flt = flt[1:]
was_neg = True
str_vals = str(flt).split('e')
coef = float(str_vals[0])
exp = int(str_vals[1])
return_val = ''
if int(exp) > 0:
return_val += str(coef).replace('.', '')
return_val += ''.join(['0' for _ in range(0, abs(exp - len(str(coef).split('.')[1])))])
elif int(exp) < 0:
return_val += '0.'
return_val += ''.join(['0' for _ in range(0, abs(exp) - 1)])
return_val += str(coef).replace('.', '')
if was_neg:
return_val='-'+return_val
return return_val
29 votes
Il est décevant de constater qu'aucune des réponses données ici ne répond à la question. Ce serait bien s'il y avait un moyen d'empêcher python(3) d'utiliser la notation scientifique sauf si cela est spécifié explicitement. Toutes les réponses demandent à l'utilisateur de supprimer explicitement la notation scientifique, ce qui n'est pas la même chose que de supprimer l'utilisation implicite de la notation scientifique dans python.
5 votes
Oui, comme R le fait avec
options(scipen = 999)
0 votes
@BLUC le
numpy
Le module offrenp.format_float_positional()
et cela fonctionne bien.