2009-12-13 5 views
0

Donc, je sais comment imprimer un nombre à virgule flottante avec un certain nombre de décimales.Comment retourner un nombre à virgule flottante avec un nombre défini de décimales?

Ma question est comment retourner avec un nombre spécifié de décimales?

Merci.

+5

Puisque les nombres à virgule flottante ne sont pas décimaux en premier lieu, cette question n'a aucun sens. Veuillez expliquer ce que vous entendez par "décimales" dans ce contexte. S'il vous plaît fournir des exemples. –

Répondre

6

Vous pouvez utiliser la fonction round()

Les documents à ce sujet:

round(x[, n]) 

x arrondi à n chiffres, en arrondissant la moitié pour égaliser. Si n est omis, la valeur par défaut est 0.

4

Afin d'obtenir deux décimales, il faut multiplier le nombre par 100, le plancher, puis diviser par 100.

Et notez que le numéro que vous retournerez aura pas vraiment que deux décimales parce que la division par 100 La plupart du temps, il ne peut pas être représenté exactement dans l'arithmétique à virgule flottante IEEE-754. Ce sera seulement l'approximation la plus proche représentable d'un nombre avec seulement deux décimales.

+4

Pourquoi recommandez-vous cela à la place de 'round (the_number, 2)'? –

+0

Je ne le fais pas :) Je donnais une solution agnostique qui n'utilisait que des opérations de base disponibles partout. J'espérais aussi que quelqu'un parlerait du module 'decimal', mais personne ne l'a fait ... Ah, oui, sth. Bravo cet homme! –

2

Les nombres à virgule flottante ont un nombre infini de décimales. La représentation physique sur l'ordinateur dépend de la représentation de float, ou double, ou autre et dépend de a) la construction de la langue b), par ex. float, double, etc. c) implémentation du compilateur d) matériel. Maintenant, étant donné que vous avez une représentation d'un nombre à virgule flottante (c'est-à-dire un réel) dans une langue particulière, votre question est-elle de savoir comment l'arrondir ou la tronquer à un nombre spécifique de chiffres?

Il n'est pas nécessaire de le faire dans l'appel de retour, car vous pouvez toujours tronquer/arrondir après. En fait, vous ne voudrez généralement pas tronquer avant d'imprimer réellement, pour préserver plus de précision. Une exception pourrait être si vous vouliez vous assurer que les résultats étaient cohérents entre différents algorithmes/matériels, ie. dire que vous aviez un logiciel de trading financier qui avait besoin de passer des tests unitaires dans les langues/plates-formes différentes, etc.

+1

Tous les nombres à virgule flottante peuvent réellement être écrits avec un nombre * fini * de chiffres décimaux (preuve: multipliez toute somme finie de puissances de 2 [y compris négatives] par 10 à une puissance assez grande, et vous obtenez un entier). – EOL

+0

Désolé, je confondais le point flottant avec les nombres réels. Par définition, un nombre à virgule flottante est une chaîne de chiffres finie. –

4

Si vous voulez vraiment des nombres à virgule flottante avec une précision fixe, vous pouvez utiliser le module decimal. Ces nombres ont une précision modifiable par l'utilisateur et vous pouvez simplement faire votre calcul sur des décimales à deux chiffres.

Questions connexes