2017-10-13 1 views
-2

Je dois retourner un nombre (pas une chaîne!) Qui a toujours 2 décimales, quel que soit le nombre que je saisis. Par exemple:Comment afficher un nombre avec 2 décimales

  • 86 retours 86.00
  • 3.12345 retours 3.12
  • 2.0 retours 2.00

Le problème est que si j'utilise le module décimal de Python, il retourne Decimal('#'), au lieu de simplement # (Je veux seulement le nombre). Si j'utilise à la place "%.2f" % #, il renvoie le nombre comme une chaîne, ce qui n'est pas ce que je veux car je ne peux pas faire d'opérations mathématiques sur les chaînes en Python.

+1

Vous ne pouvez pas retourner un nombre. Vous confondez * représentation * avec * valeur *. '86.0' est une valeur à virgule flottante, ce ne sera * jamais * un nombre avec deux zéros après le point décimal. –

+0

A la place, vous contrôlez la façon dont les nombres sont * imprimés *, vous contrôlez ainsi leur conversion en chaînes lorsque vous avez besoin de les afficher. –

Répondre

-1
x = 3.14159 
round(x, 2) 

3,14

Donne
+1

L'arrondi vous donne un autre objet flottant. Les nombres entiers ne seront pas affichés avec 2 décimales, et le point flottant n'est * pas une représentation précise de tous les nombres réels * possibles, ce qui signifie que l'arrondi à deux chiffres * peut toujours produire un flottant qui utilise plus de chiffres *. –

+0

Oui, mais aucun type n'a exactement deux décimales. La seule façon d'être exact serait d'utiliser un int qui est décalé de deux décimales, mais alors aucune des maths ne fonctionne sans écrire les méthodes personnalisées '__mul__' et' __div__' pour la classe, donc c'est le moyen le plus simple de réalisation de ce qui a été demandé –

+0

Le PO a demandé un autre numéro. Bien sûr, un flotteur utilisera encore plus de chiffres, c'est un flotteur, il ne sera jamais exact, mais il sera exact à la précision que l'OP utilise. –