expr permet de transformer une chaîne de chiffres ou lettres
en un nombre entier ayant comme écriture en base 8,ou 10 ou 16 cette chaîne
de chiffres. Il faut bien sûr que l’écriture soit valide et représente
un nombre entier dans la base donnée : toutefois expr("019") renvoie
le nombre décimale 19.0 (voir aussi 9.5.5).
Attention
Si la chaîne commence par 0x, expr transforme cette chaîne en
le nombre entier écrit en base 16, sinon,
si la chaîne commence par 0, expr transforme cette chaîne en
le nombre entier écrit en base 8 et sinon
expr transforme cette chaîne en le nombre entier écrit en base 10.
On tape :
expr("123")
On obtient :
123
On tape :
expr("0123")
On obtient :
83
En effet : 1*82+2*8+3=83
On tape :
expr("0x12f")
On obtient :
303
En effet 1*162+2*16+15=303
Remarque
On tape :
expr(char([48,50,56,56]))
On obtient un nombre flottant :
288.0
En effet char([48,50,56,56]) renvoie "0288".
Or un nombre entier commençant par 0 est un nombre écrit en octal, du coup
il ne doit pas contenir de chiffre supérieur ou égal à 8. Ici le nombre
a des chiffres égaux à 8, il est donc réinterprété (après détection
d’erreur de saisie en octal) comme un nombre flottant.
On tape :
expr(char([48,50,55,55]))
On obtient un nombre exact car l’écriture "0277" est valide :
191
En effet char([48,50,55,55]) renvoie "0277" et 0277
est l’écriture en base 8 de 191 (7+8*7+64*2=191).
On tape :
expr(char([48,48,50,51]))
On obtient un nombre exact car l’écriture "0023" est valide :
19
En effet char([48,50,55,55]) renvoie "0023" et 0023
est l’écriture en base 8 de 19 (3+2*8=19).