Maison > Article > développement back-end > Comment puis-je tronquer une valeur flottante en Python sans arrondir le résultat ?
Pour supprimer des chiffres d'un flottant et avoir un nombre fixe de chiffres après la virgule décimale, par exemple en convertissant 1,923328437452 en 1,923 , vous pouvez utiliser la fonction suivante :
def truncate(f, n): '''Truncates/pads a float f to n decimal places without rounding''' s = '{}'.format(f) if 'e' in s or 'E' in s: return '{0:.{1}f}'.format(f, n) i, p, d = s.partition('.') return '.'.join([i, (d+'0'*n)[:n]])
Cette fonction réalise la troncature en convertissant le flottant en chaîne, en le divisant en composants entiers, décimaux et décimaux, puis en les recombinant avec le nombre souhaité de chiffres décimaux. Si le flottant est trop grand ou trop petit pour être représenté sans notation exponentielle, il est d'abord converti dans ce format.
Remarque : Cette fonction est compatible avec Python 2.7 et 3.1. Pour les versions antérieures, une solution de contournement légèrement moins précise impliquant un arrondi à 12 décimales avant la troncature peut être utilisée.
Pour comprendre la méthode derrière la fonction de troncature, il est important de reconnaître que les nombres à virgule flottante sont stockés dans la mémoire de l'ordinateur sous forme de représentation binaire, qui ne correspond pas toujours à la représentation décimale exacte souhaitée. Par exemple, 0,3 et 0,299999999999999998 sont stockés en utilisant la même représentation binaire.
Pour résoudre cette ambiguïté, la fonction utilise des algorithmes sophistiqués pour choisir la représentation décimale « la plus agréable » pour la troncature. Ceci est réalisé en convertissant le flottant en chaîne à l'aide de l'opération de formatage de chaîne par défaut, qui imite les spécifications du format "g" et choisit automatiquement la meilleure représentation.
Cependant, il existe certains cas extrêmes où même cette méthode peut aboutir dans les « faux positifs », là où se trouvent les nombres qui ne doivent pas être arrondis. Dans ces cas, spécifier une précision fixe avant la troncature peut être nécessaire.
Tronquer un flottant sans arrondi est essentiel lorsqu'il s'agit de valeurs à virgule flottante très spécifiques qui sont intentionnellement proches de l'arrondi. nombres mais ne leur sont pas égaux. Pour la plupart des applications pratiques, l'arrondi est généralement suffisant.
La fonction présentée ici ignore également les chiffres perdus lors de la troncature, ce qui diffère de l'arrondi, qui ajuste les chiffres restants. Cette approche garantit que la valeur tronquée conserve sa précision d'origine aux décimales spécifiées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!