en Python 3.8 J'essaie d'obtenir une valeur de flotteur à afficher comme suit:
Je suis au courant de "rond". Si j'ai ce programme: p> Je suis également conscient que je peux faire cela: p> Cela ne reçoit pas ce que je veux non plus: p> Comment puis-je résoudre ce problème? p> p>
6 Réponses :
Vous pouvez simplement faire ce
Vous voulez dire quelque chose comme ça?
Merci! C'est bon, mais un peu impliqué, je ne voulais pas ajouter de fonctions à mon programme.
Vous pouvez utiliser les types de format généraux de formatage des chaînes.
print('input a number') chuu = float(input()) print('{:g}'.format(round(chuu, 2)))
Voir si cela convient!
#Demonstration li = [0.00005,1.100005,1.00001,0.00001,1.11111,1.111,1.01,1.1,0.0000,5,1000] meth1 = lambda chu: chu if type(chu)!=float else ('{0:.2f}' if(len(str(chu).split('.')[-1])>=2) else '{0:.1f}').format(round(chu,2)) print(*map(meth1,li)) output 0.00 1.10 1.00 0.00 1.11 1.11 1.01 1.1 0.0 5 1000
Oui, j'ai pensé à faire quelque chose avec la manipulation de chaîne où je pouvais convertir une chaîne, regarder les deux derniers chiffres, etc. Mais j'étais après quelque chose de plus élégant et pythonique que cela.
J'ai fait des modifications, voir si c'est ce que vous recherchez. Cela n'implique pas une fonction et sa pythonique.
Qu'est-ce que cela fait pour 0.00005 code>?
@mark remercie de pointer que je n'ai pas apporté de modifications à la réponse, mais même cette approche ne fonctionnerait pas avec des nombres négatifs
Cette solution est plus basée sur la chaîne
def dec(s): s = s.rstrip('.') if(s.find('.') == -1): return s else: i = s.find('.') return s[:i] + '.' + s[i+1:i+3] print(dec('3.1415')) print(dec('3')) print(dec('1234.5678')) print(dec('1234.5')) print(dec('1234.')) print(dec('1234')) print(dec('.5678')) 3.14 3 1234.56 1234.5 1234 1234 .56
Merci! C'est quelque chose que j'ai eu dans le fond de mon esprit lors de la question et je suppose que le genre de chose que j'allais essayer si je ne pouvais pas obtenir une solution de numération plus élégante.
Si vous ne le voulez que pour l'impression, les travaux suivants. Cependant, cela transformera les nombres de 3,0 en seulement 3. (pas clair si vous vouliez ce comportement ou non) < / p> p>
Oui, cela fonctionne bien et fera parce que je veux seulement imprimer plutôt que de calculer. Cependant, vous préférez ne pas importer de module si je n'ai pas besoin.
Ne sonne pas trop difficile pour coder - veuillez éditer votre propre tentative de résoudre cela dans votre question.
Euh ... j'ai déjà deux tentatives là-bas?
Er ... Je pense que vous avez simplement montré ce que la bibliothèque standard
rond () code> et l'impression formatée est et a démontré qu'ils ne peuvent pas résoudre votre problème, ce qui va bien, mais Je ne vois pas aucune tentative i> d'écrire un code peut-être peut-être autour de ces fonctions à en fait i> résoudre le problème.
Est-ce que cela répond à votre question? Comment montrer un point décimal uniquement quand il est Pas un nombre entier?
@Georgy Oui, mais j'aime bien la réponse de Sneehil Ci-dessous mieux, c'est effectivement similaire mais plus simple et plus érudite, certainement le plus facile à comprendre. C'est le genre de réponse que je me sens stupide pour ne pas penser à moi-même.