Maison > Article > développement back-end > Comment tronquer les valeurs flottantes en Python sans arrondir ?
Tronquer une valeur flottante à un nombre spécifique de décimales, sans arrondir, peut être réalisé en Python à l'aide de la commande 'truncate( )' fonction. Cette fonction prend deux arguments : la valeur flottante à tronquer et le nombre de décimales à conserver. Voici une implémentation de la fonction qui utilise l'arrondi intelligent :
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]])
La fonction convertit le float en chaîne, garantissant que la précision totale est préservée. Il divise ensuite la chaîne en trois parties : la partie entière, le point décimal et les chiffres décimaux. Il conserve les chiffres décimaux, en les complétant avec des zéros si nécessaire, et rejoint les parties pour former la chaîne tronquée.
Dans certains cas, il n'est pas possible de représenter exactement un flottant en décimal notation. Par exemple, 0,3 exactement peut être représenté avec précision sous forme de nombre flottant IEEE mais pas sous forme décimale. Dans de tels cas, la fonction utilise l'opération de formatage de chaîne par défaut fournie par Python 2.7 et versions ultérieures. Cette opération sélectionne intelligemment la représentation décimale la plus proche du flottant, sans arrondi.
Si vous utilisez des versions de Python antérieures à 2.7 ou 3.0, vous pouvez tronquer le float et arrondissez-le à un grand nombre de décimales (par exemple, 12) avant de formater le résultat sous forme de chaîne. Cette approche est moins précise mais fonctionne bien dans la plupart des cas :
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]])
Notez que l'arrondi intelligent peut produire des faux positifs, où des nombres sont arrondis alors qu'ils n'étaient pas destinés à l'être. Pour éviter cela, une précision fixe peut être utilisée. De plus, les versions antérieures de Python peuvent produire des représentations décimales inexactes. Dans de tels cas, il est recommandé d'utiliser la solution de contournement à 12 chiffres.
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!