Comment puis-je tronquer une valeur flottante en Python sans arrondir le résultat ?

Patricia Arquette
Libérer: 2024-11-06 00:03:02
original
932 Les gens l'ont consulté

How can I truncate a float value in Python without rounding the result?

Comment tronquer les valeurs flottantes sans arrondir ?

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]])
Copier après la connexion

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.

Comprendre la méthode

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.

Notes supplémentaires

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!