Maison > développement back-end > Tutoriel Python > Comment tronquer un flottant à un nombre spécifique de décimales sans arrondir ?

Comment tronquer un flottant à un nombre spécifique de décimales sans arrondir ?

Susan Sarandon
Libérer: 2024-11-06 09:45:02
original
846 Les gens l'ont consulté

How Do I Truncate a Float to a Specific Number of Decimal Places Without Rounding?

Comment supprimer des chiffres d'un flottant

Pour supprimer des chiffres d'un flottant et conserver un nombre spécifique de chiffres après la virgule décimale, suivez ces étapes :

Implémentation (Python 2.7 et 3.1) :

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

Implémentation (anciennes versions de Python) :

def truncate(f, n):
    """Truncates/pads a float f to n decimal places without rounding"""
    s = '%.12f' % f
    i, p, d = s.partition('.')
    return '.'.join([i, (d+'0'*n)[:n]])
Copier après la connexion

Explication :

  1. Convertir en chaîne : Convertissez le flottant en chaîne avec une précision maximale à l'aide de '{}'.
  2. Gérer la notation scientifique : Si la représentation sous forme de chaîne inclut « e » ou « E », utilisez « {0:.{1}f} » pour la formater.
  3. Diviser la chaîne : Partitionner la chaîne en trois parties : avant le point décimal (i), le point décimal lui-même (p) et après le point décimal (d).
  4. Tronquer ou Pad : Ajoutez des « 0 » à d si nécessaire pour obtenir n décimales, ou tronquez d s'il contient plus de n décimales.

Considérations spéciales :

  • Considérations relatives à la précision : Pour les anciennes versions de Python (jusqu'à 2.6 ou 3.0), la sélection d'une précision fixe (par exemple, 12) pour l'arrondi peut être nécessaire pour éviter les erreurs de troncature.
  • Erreur d'arrondi et de virgule flottante : Certains littéraux à virgule flottante peuvent représenter la même valeur binaire même s'ils apparaissent différents dans le code, ce qui entraîne des divergences potentielles dans la troncature.

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