En utilisant Python 2.7, comment puis-je arrondir mes nombres à deux décimales au lieu de la dizaine qu'il donne ?
print "financial return of outcome 1 =","$"+str(out1)
En utilisant Python 2.7, comment puis-je arrondir mes nombres à deux décimales au lieu de la dizaine qu'il donne ?
print "financial return of outcome 1 =","$"+str(out1)
Utiliser la fonction intégrée round()
:
>>> round(1.2345,2)
1.23
>>> round(1.5145,2)
1.51
>>> round(1.679,2)
1.68
Ou fonction intégrée format()
:
>>> format(1.2345, '.2f')
'1.23'
>>> format(1.679, '.2f')
'1.68'
Ou un nouveau style de formatage des chaînes de caractères :
>>> "{:.2f}".format(1.2345)
'1.23
>>> "{:.2f}".format(1.679)
'1.68'
Ou le formatage des chaînes à l'ancienne :
>>> "%.2f" % (1.679)
'1.68'
aide sur round
:
>>> print round.__doc__
round(number[, ndigits]) -> floating point number
Round a number to a given precision in decimal digits (default 0 digits).
This always returns a floating point number. Precision may be negative.
Puisque vous parlez de financière chiffres, vous NE PAS VOULOIR pour utiliser l'arithmétique à virgule flottante. Il est préférable d'utiliser Decimal.
>>> from decimal import Decimal
>>> Decimal("33.505")
Decimal('33.505')
Formatage de la sortie texte avec le nouveau style format()
(l'arrondi se fait par défaut au demi-pair) :
>>> print("financial return of outcome 1 = {:.2f}".format(Decimal("33.505")))
financial return of outcome 1 = 33.50
>>> print("financial return of outcome 1 = {:.2f}".format(Decimal("33.515")))
financial return of outcome 1 = 33.52
Voir les différences d'arrondi dues à l'imprécision de la virgule flottante :
>>> round(33.505, 2)
33.51
>>> round(Decimal("33.505"), 2) # This converts back to float (wrong)
33.51
>>> Decimal(33.505) # Don't init Decimal from floating-point
Decimal('33.50500000000000255795384873636066913604736328125')
Manière correcte d'arrondir les valeurs financières :
>>> Decimal("33.505").quantize(Decimal("0.01")) # Half-even rounding by default
Decimal('33.50')
Il est également courant d'avoir d'autres types d'arrondis dans différentes transactions :
>>> import decimal
>>> Decimal("33.505").quantize(Decimal("0.01"), decimal.ROUND_HALF_DOWN)
Decimal('33.50')
>>> Decimal("33.505").quantize(Decimal("0.01"), decimal.ROUND_HALF_UP)
Decimal('33.51')
Rappelez-vous que si vous simulez le résultat du rendement, vous devrez peut-être arrondir à chaque période d'intérêt, puisque vous ne pouvez pas payer/recevoir des fractions de cent, ni recevoir des intérêts sur des fractions de cent. Pour les simulations, il est assez courant d'utiliser la virgule flottante en raison des incertitudes inhérentes, mais si vous le faites, n'oubliez jamais que l'erreur existe. Ainsi, même les investissements à intérêt fixe peuvent avoir des rendements légèrement différents à cause de cela.
Vous pouvez utiliser str.format()
également :
>>> print "financial return of outcome 1 = {:.2f}".format(1.23456)
financial return of outcome 1 = 1.23
Lorsque l'on travaille avec des centimes ou des nombres entiers. Vous rencontrerez un problème avec 115 (comme dans 1,15 $) et d'autres nombres.
J'avais une fonction qui convertissait un Integer en Float.
...
return float(115 * 0.01)
Cela fonctionne la plupart du temps, mais il arrive parfois que l'on obtienne quelque chose comme 1.1500000000000001
.
J'ai donc modifié ma fonction pour qu'elle retourne comme ceci...
...
return float(format(115 * 0.01, '.2f'))
et qui reviendra 1.15
. Pas '1.15'
o 1.1500000000000001
(renvoie un flottant, pas une chaîne)
Je poste ce message surtout pour me souvenir de ce que j'ai fait dans ce cas, puisque c'est le premier résultat de Google.
Le mieux, à mon avis, est d'utiliser la fonction format() fonction :
>>> print("financial return of outcome 1 = $ " + format(str(out1), '.2f'))
// Should print: financial return of outcome 1 = $ 752.60
Mais je dois dire qu'il ne faut pas utiliser le rond ou le format lorsque l'on travaille avec des valeurs financières.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.