Maison > Article > développement back-end > Comment tronquer les valeurs flottantes à un nombre spécifique de décimales en Python sans arrondir ?
Comment tronquer les valeurs flottantes à un nombre spécifique de décimales
En Python, vous pouvez supprimer des chiffres d'un flottant pour obtenir une valeur fixe nombre de chiffres après la virgule. Prenons l'exemple suivant :
1.923328437452 → 1.923
Tronquer le flottant à trois décimales donne le résultat souhaité de 1,923.
Solution
La fonction ci-dessous effectue cette tâche :
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]])
Explication
La fonction convertit le flottant en une représentation sous forme de chaîne, le divisant en trois parties : la partie entière, le point décimal , et la partie fractionnaire. Il remplit ensuite la partie fractionnaire avec des zéros jusqu'au nombre spécifié de décimales, garantissant que tous les chiffres en excès sont tronqués.
Gestion de la notation scientifique
La fonction vérifie si le flotteur est représenté en notation scientifique (e ou E) et utilise une fonction de format différente pour préserver l'exposant.
Anciennes versions de Python
Pour les versions Python antérieures à 2.7 , vous pouvez toujours tronquer les flottants, mais le résultat peut ne pas être aussi précis en raison des limitations du mécanisme de formatage en virgule flottante. Une solution possible consiste à arrondir le flottant avec une plus grande précision avant de le tronquer :
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]])
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!