Fonction d'ajout des séparateur de millier. Imaginons qu'on veuille afficher des prix de manière très élégante avec des séparateurs de millier. Or il s'avère que le séparateur de millier n'existe pas dans la notation "informatique" mais uniquement dans lla notation "littéraire". Pour afficher un nombre avec des séparateurs de millier, on va donc afficher une chaîne de caractères et non pas un nombre. Ainsi, pour afficher "1.234,15" à partir de "1234,15", on va devoir convertir un nombre en chaîne de caractère puis ajouter les séparateurs de millier aux bonnes places.
on seperateur_mille(nombre,separateur_de_mille)
set partie_entiere to text1 thru ((length of nombre)-3) of nombre
set partie_decimale to text((length of nombre)-2) thru -1 of nombre
set nombre to partie_entiere
set resultat to last character of nombre
set nbr_caractere to length of nombre
repeat with i from 2 to nbr_caractere
if ((i mod 3)=1) then
set resultat to separateur_de_mille&resultat
end if
set resultat to (character(nbr_caractere-i+1) of nombre)&resultat
end repeat
return (resultat&partie_decimale)
end seperateur_mille
return seperateur_mille("12345678.82", ",")
Explications : La fonction accepte uniquement des nombres avec 2 chiffres après la virgule (fournis par la fonction précédente par exemple). Tout d'abord, elle mémorise la partie entière et la partie décimale. Pour constituer la chaîne de caractères finale, la fonction "relit" le nombre de la droite vers la gauche (unités, dizaine, centaine, millier,etc…) et ajoute un caractère servant de séparateur de millier tous les 3 caractères et enfin replace la partie décimale.
Astuce & application : on peut utiliser cette fonction aussi bien pour un format de nombre anglais (séparateur de millier ",") que pour un format français (séparateur de millier ".").
on peut aussi déterminer le format de nombre du système afin de fournir le paramètre "separateur_de_mille" automatiquement grâce ce petit script :
set separateur_system to 2nd character of ((1/10) as string)
if (separateur_system=",") then
set separateur_de_mille to "."
else
set separateur_de_mille to ","
end if