9
votes

Pourquoi cette division ne fonctionne-t-elle pas à Python?

considérer: xxx

Comment puis-je le rendre décimal?


1 commentaires

Un peu partout, mais float n'est pas le même que le type Decimal dans la bibliothèque standard Python. Lorsque vous dites "je veux juste que cela retourne une décimale" Ce que vous voulez vraiment dire, c'est "Je veux juste qu'il renvoie une chaîne représentant une valeur fractionnée en notation décimale", n'est-ce pas?


4 Réponses :


29
votes

jusqu'à la version 3, l'opérateur de division de Python, /, se comportait comme l'opérateur de division de C lorsqu'il est présenté avec deux arguments entier: il renvoie un résultat entier tronqué lorsqu'il y aurait une partie fractionnelle. Voir: PEP 238 xxx

en python 2 (et peut-être plus tôt), vous pouvez utiliser: xxx


2 commentaires

-7 // 3 = -3 (reste est = 2) en python et -7/3 = -2 (reste = -1) en C / C ++, donc je ne dirais pas que ce comportement est le même en python que dans C / C ++


@ARTUR C'est la différence entre Division du sol VS Divison Standard et Modulus VS Resternder Operators. Plancher et mod oeuvculent vers l'infini négatif, la division standard et le travail restant vers zéro.



8
votes

Dans Python 2.x, la division fonctionne comme celle-ci ressemble à des langages similaires: Si les deux arguments sont des entiers, le résultat est tronqué à un entier, de sorte que 29/1009 est 0. 0 comme un flotteur est de 0,0. Pour le réparer, jeté à un flotteur avant de diviser: xxx

dans Python 3.x, la division agit plus naturellement, vous obtiendrez donc le résultat mathématique correct (dans l'erreur de point flottant). .


0 commentaires

0
votes
print str(float(numerator)/float(denom))

2 commentaires

Il suffit de lancer l'un des opérandes à flotter (). Je vous recommande généralement de casser le numérateur car il localise la distribution au début de l'expression où les lecteurs le verront normalement plus facilement.


Oui, mais cela semblait plus "propre" pour moi juste parce qu'il était plus transparent dans son casting. Mais oui, la coulée seule est suffisante.



1
votes

Dans votre évaluation, vous mondez le résultat, vous devez plutôt lancer les opérandes.


0 commentaires