FloatToStrRounded

Description de FloatToStrRounded

Syntaxe

function FloatToStrRounded(value: Float): String
value:

Remarques

Fonction obsolète (numériquement arbitraire et incohérente avec la réalité des mesures)

Pour effectuer un arrondi, indiquer la précision attendue et utiliser FloatToStr.

Explication: la fonction tentait de résoudre un problème lié à la représentation des nombres à virgule flottante en informatique. Les calculs avec des flottants peuvent produire des résultats avec de longues séries de chiffres après la virgule, qui ne sont pas toujours significatifs ou utiles. Elle visait à améliorer la lisibilité des nombres en éliminant les longues séries de 0 ou de 9 qui peuvent apparaître en raison des limitations de la précision des flottants.

Problèmes potentiels avec cette approche

  • Arbitraire : Le choix de 7 chiffres consécutifs est arbitraire et pourrait ne pas convenir à tous les cas d'utilisation.
  • Perte de précision : Dans certains cas, cette fonction pourrait supprimer des informations importantes, surtout dans des calculs où chaque chiffre peut être significatif.
  • Incohérence : Le comportement de la fonction n'est pas uniforme. Par exemple, 3.350000001 n'est pas arrondi, mais 3.3500000001 l'est.
  • Nombre de décimales significatives : Le nombre de décimales utilisé dans la représentation d'une valeur devrait refléter la précision réelle de la mesure. Afficher plus de décimales que ce que la précision de l'instrument permet n'ajoute pas d'information valide et peut être trompeur.

Alternatives plus appropriées

  • Formatage avec précision fixe : Utiliser une fonction de formatage standard qui permet de spécifier le nombre de décimales désirées, correspondant à une réalité physique.
  • Arrondi mathématique : Appliquer un arrondi mathématique à un nombre fixe de décimales plutôt que de chercher des séquences spécifiques.
  • Bibliothèques de calcul de précision : Pour des calculs nécessitant une haute précision, utiliser des bibliothèques spécialisées ou des calculs en virgule fixe (ex. BigInteger) supportant un nombre arbitraire des décimales.
  • Limitation intrinsèque : Tout instrument de mesure a une précision limitée, connue et quantifiable. Cette limitation définit le nombre de chiffres significatifs qui peuvent être considérés comme fiables dans une mesure ou un résultat.

...

Recherche une occurrence de 7 "0" consécutifs ou de 7 "9" consécutifs et arrondi le nombre pour faire disparaître les 7"0" ou les 7 "9" et tous les chiffres qui suivent.

Exemples

PrintLn(FloatToStrRounded(3.3500000001)); // Retourne 3.35
PrintLn(FloatToStrRounded(3.350000001)); // Retourne 3.350000001
PrintLn(FloatToStrRounded(3.359999999)); // Retourne 3.36
PrintLn(FloatToStrRounded(3.35999999)); // Retourne 3.35999999
PrintLn(FloatToStr(sqrt(2)*sqrt(2)-2)); // Retourne 4.4408E-16
PrintLn(FloatToStrRounded(sqrt(2)*sqrt(2)-2)); //Retourne 0

Classification

SysUtils