Maison >développement back-end >Golang >Comment convertir un Float64 en une chaîne à largeur fixe avec un maximum de chiffres significatifs en Python ?
Conversion de Float64 en chaîne à largeur fixe avec un maximum de chiffres significatifs
Lors de l'impression des valeurs float64 dans un tableau à largeur fixe, nous avons souvent besoin d'un nombre maximum de chiffres significatifs pour conserver la précision. La bibliothèque standard ne dispose pas d'une méthode pratique à cet effet.
Spécificateur de format personnalisé
Pour surmonter cette limitation, nous pouvons créer un spécificateur de format personnalisé qui s'adapte à l'ampleur de la valeur. . La stratégie consiste à examiner la valeur pour déterminer si elle nécessite une notation scientifique. Si tel est le cas, nous calculons la largeur de l’exposant et ajustons la précision de la fraction en conséquence. Sinon, nous récupérons simplement la longueur de la fraction et calculons la précision requise pour la largeur fixe.
Implémentation Python
Voici une implémentation Python de l'approche proposée :
import math def format_float(value, width): """ Converts a float to a fixed-width string with maximum significant digits. Args: value: The float value to format. width: The fixed width of the string. Returns: A fixed-width string containing the formatted value. """ if abs(value) >= 1e12: # Scientific notation exponent = int(math.log10(abs(value))) fraction_width = width - len(str(exponent)) - 2 return f"{value:.{fraction_width}g}" else: # Regular form fraction_length = len(str(int(value))) precision = width - fraction_length - 1 return f"{value:.{precision}f}"
Exemple Utilisation
values = [0, 1234.567890123, 0.1234567890123, 123456789012.0, 1234567890123.0, 9.405090880450127e9, 9.405090880450127e19, 9.405090880450127e119] for value in values: print(format_float(value, 12))
Sortie
0.0000000000 0.1234567890 1234.5678901 123456789012 1.234568e+12 9405090880.5 9.405091e+19 9.40509e+119
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!