Fonction d'arrondissement à 2 chiffres après la virgule et conversion au format texte. Imaginons qu'on veuille afficher des prix. Pour cela, nous allons devoir arrondir les valeurs à 2 chiffres dans la partie décimale. La première difficulté consiste à arrondir le nombre, la seconde à gérer les cas particuliers.
on Rework_numbers(nombre)
set nombre to round(nombre* 100)
if (nombre = 0) then return "0.00"
set partie_entiere to (nombre div 100) as string
if ((nombre > 0) and (nombre<10)) then
set partie_decimale to "0"&(nombre as text)
else
set partie_decimale to text ((length of (nombre as string)) - 1) thru -1 of (nombre as string)
end if
return (partie_entiere&separateur_decimal&partie_decimale)
end Rework_numbers
set separateur_decimal to "."
set mon_nombre to 12.3478
return Rework_numbers(mon_nombre)
Explications : Le principe de cette fonction consiste à tronquer la partie décimale à 2 chiffres, il suffit donc de multiplier le nombre initial par 100, de l'arrondir et de ne prendre que la partie entière. Le script arrondit dans un premier temps le nombre multiplié par 100 afin de convertir correctement un nombre tel que 22.22. Sans le "Round (nombre*100)" on obtiendrait "22" pour la partie entière à la ligne suivante. Les deux tests en "if" servent à gérer deux cas particuliers : le cas où le nombre de départ est zéro et le cas où la partie décimale ne contient qu'un chiffre.
Astuce & application : on peut utiliser cette fonction tant que les nombres à arrondir sont inférieurs à 500 millions.
cette fonction est très utile quand on veut manipuler des valeurs qui n'utilisent pas le format d'affichage scientifique (par exemple : 2.137E-5)
cette fonction est très utile également quand on veut afficher des nombres avec un séparateur décimal donné indépendemment du séparateur décimal du système.