Comment puis-je SEULEMENT autour d'un certain nombre/le flotteur vers le bas en Python?
Je vais avoir ce nombre aléatoire généré.e.g 12.75 ou 1.999999999 ou de 2,65
Je veux toujours arrondir ce nombre à l'entier le plus proche nombre entier afin de 2,65 sera arrondi à 2.
Désolé pour la question, mais je ne pouvais pas trouver la réponse, et après de nombreuses recherches, merci 🙂
Voir
Voulez-vous 2,65 pour vous donner la valeur float 2.0 ou la valeur int 2? Et pour -2.65 voulez-vous -2 ou -3?
Comme une note de côté, il peut être préférable de générer des entiers aléatoires que pour générer des flotteurs et le plancher eux. Qui peut ne pas s'appliquer à votre cas d'utilisation, mais si il semble comme il pourrait, lisez la documentation du module random.
math.floor()
.Voulez-vous 2,65 pour vous donner la valeur float 2.0 ou la valeur int 2? Et pour -2.65 voulez-vous -2 ou -3?
Comme une note de côté, il peut être préférable de générer des entiers aléatoires que pour générer des flotteurs et le plancher eux. Qui peut ne pas s'appliquer à votre cas d'utilisation, mais si il semble comme il pourrait, lisez la documentation du module random.
OriginalL'auteur Man16 | 2013-10-21
Vous devez vous connecter pour publier un commentaire.
Vous pouvez nous
int()
, les mathématiques.trunc(), ou les mathématiques.floor(). Ils ont tous à faire ce que vous voulez pour les nombres positifs:Notez, toutefois, qu'ils se comportent différemment avec les nombres négatifs: int et
math.trunc
ira à 0, alors que lamath.floor
toujours étages de haut en bas:Noter que
math.floor
etmath.ceil
utilisée pour renvoyer des flotteurs en Python 2.Également noter que
int
etmath.trunc
sera à la fois (à première vue) semblent faire la même chose, bien que leur sémantique exacte diffèrent. En bref: int général/type de conversion etmath.trunc
est spécifiquement pour les types numériques (et vous aidera à faire de votre intention plus claire).Utilisation
int
si vous n'avez pas vraiment à la différence, si vous voulez convertir des chaînes de caractères, ou si vous ne souhaitez pas importer une bibliothèque. Utilisationtrunc
si vous voulez être absolument sans ambiguïté sur ce que vous voulez dire ou si vous voulez vous assurer que votre code fonctionne correctement pour les non-builtin types.Plus d'infos ci-dessous:
Mathématiques.floor() en Python 2 vs Python 3
Noter que
math.floor
(etmath.ceil
) ont été légèrement modifiées à partir de Python 2 à Python 3 -- en Python 2, les deux fonctions retournent un flotteur à la place d'un int. Ce qui a changé en Python 3, de sorte que les deux méthodes renvoient un entier (plus précisément, ils appellent le__float__
méthode sur un objet qu'ils ont été donnés). Alors, si vous êtes à l'aide de Python 2, ou souhaitez que votre code pour maintenir la compatibilité entre les deux versions, il serait généralement pas de dangerint(math.floor(...))
.Pour plus d'informations sur les raisons de ce changement a été fait en + sur les écueils de faire
int(math.floor(...))
en Python 2, voirPourquoi faire des mathématiques Python.ceil() et math.floor() les opérations de retour des flotteurs place d'entiers?
int vs mathématiques.trunc()
Au premier coup d'œil, le
int()
etmath.trunc()
méthodes semblent être identiques. Les principales différences sont:int(param)
fera appel à laparam.__int__()
méthode pour effectuer la conversion (et puis vous essayez d'appeler__trunc__
si__int__
est pas défini)__int__
la magie de la méthode n'est pas toujours clairement définie -- pour une certaine période de temps, il s'est avéré que la sémantique exacte et les règles de la façon dont__int__
devrait travaux ont été en grande partie à gauche jusqu'à la mise en œuvre de la classe.int
fonction est destinée à être utilisée lorsque vous souhaitez convertir un objet général dans un int. C'est un type de méthode de conversion. Par exemple, vous pouvez convertir des chaînes ints en faisantint("42")
(ou de faire des choses comme le changement de base:int("AF", 16) -> 175
).math.trunc(param)
fonction fera appel à laparam.__trunc__()
méthode afin d'effectuer la conversion de__trunc__
méthode magique a été précisément défini dans PEP 3141 (et plus précisément dans le Les changements à l'exploitation et __ _ _ magie__ méthodes section).math.trunc
fonction est destinée à être utilisée quand vous voulez prendre un nombre réel et plus précisément tronquer et supprimer ses décimales pour produire un type intégral. Cela signifie que, contrairement àint
,math.trunc
est purement numérique de l'opération.Tout ce que dit, il s'avère tout de Python intégré de types se comporte exactement de la même si vous utilisez int ou tronc. Cela signifie que si tout ce que vous faites est de l'utilisation des ints, des flotteurs, des les fractions, et décimales, vous êtes libre d'utiliser int ou tronc.
Toutefois, si vous voulez être très précis sur ce qu'est exactement votre but est (c'est à dire si vous voulez être absolument clair si vous êtes le plancher ou la troncature), ou si vous travaillez avec le numérique personnalisé des types qui ont des implémentations différentes pour
__int__
et__trunc__
, alors il serait probablement préférable d'utilisermath.trunc
.Vous pouvez également trouver plus d'information et de débat sur ce sujet sur Python liste de diffusion des développeurs.
int(-12.6)
donne -12 pour moi.oups -- désolé!
math.floor
toujours renvoie un float.J'ai juste jeté en mathématiques.étage à l'int de sorte qu'il fera bien son travail. Merci pour cette réponse. 😀
OriginalL'auteur Michael0x2a
vous pouvez le faire facilement avec un construit en fonctions python, il suffit d'utiliser deux barres obliques et le diviser par 1.
OriginalL'auteur kyle k
Pas besoin d'importer n'importe quel module, comme les mathématiques, etc....
python bydeafault il convertir si vous ne tapez simplement cast en entier
OriginalL'auteur Shivendra Singh
Je ne suis pas sûr de savoir si vous voulez des mathématiques.étage, les maths.trunc, ou de type int, mais... c'est presque certainement l'une de ces fonctions, et vous pouvez probablement lire les docs et de décider plus facilement ce que vous pouvez expliquer assez pour usb de décider pour vous.
Oh, il ressemble à un autre gars l'a expliqué.
OriginalL'auteur abarnert
Évidemment, Michael0x2a réponse est ce que vous devriez faire. Mais, vous pouvez toujours obtenir un peu plus créatif.
OriginalL'auteur LaraChicharo
Si vous êtes seulement à la recherche de l'entier le plus proche de la partie je pense que la meilleure option serait d'utiliser les mathématiques.trunc() fonction.
Vous pouvez également utiliser int()
La différence entre ces deux fonctions est que la fonction int() traite également de la chaîne de conversion numérique, où trunc() traite uniquement des valeurs numériques.
Où trunc() va lancer une exception
Si vous savez que vous ne travailler qu'avec des données numériques, vous devriez envisager d'utiliser trunc() fonction puisqu'il est plus rapide que int()
OriginalL'auteur Vlad Bezden