Plusieurs fonctions existent pour la troncature et l'arrondi. Ces fonctions prennent toutes deux arguments : un nombre n et un diviseur d. Le diviseur est facultatif et sa valeur par défaut est 1. Chacune de ces fonctions renvoie deux valeurs (voir chapitre 13), un quotient q et un reste r tels que qd + r = n. La valeur q est obtenue par une division entre n et d, suivie d'une conversion du résultat en entier. La différence entre ces fonctions réside dans la façon dont est faite cette conversion. Voici les fonctions disponibles :
nom | fonction |
floor | résultat tronqué vers l'infini négatif |
ceiling | résultat tronqué vers l'infini positif |
truncate | résultat tronqué vers zéro |
round | résultat arrondi vers l'entier le plus proche |
Exemples :
* (floor 234/11 5.4)
3
5.072727
* (floor -234/11 5.4)
-4
0.3272729
* (ceiling 234/11 5.4)
4
-0.3272729
* (ceiling -234/11 5.4)
-3
-5.072727
* (truncate 234/11 5.4)
3
5.072727
* (truncate -234/11 5.4)
-3
-5.072727
* (round 234/11 5.4)
4
-0.3272729
* (round -234/11 5.4)
-4
0.3272729
* (floor 233/3)
77
2/3
* (round 234.444)
234
0.44400024
*
Les fonctions ffloor, fceiling, ftruncate et fround sont similaires aux fonctions ci-dessus, à la seule différence que la valeur q est un flottant au lieu d'un entier :
* (ffloor 23 5)
4.0
3
* (fround -234/33 2/5)
-18.0
6/55
* (fceiling 44.234d0 3)
15.0d0
-0.7659999999999982d0
* (ftruncate 9384593847593847593857938475938579385 3)
3.1281978e+36
1
*
Pour convertir un nombre rationnel en flottant, ou un flottant en complexe, utiliser coerce :
* (coerce 234 'float)
234.0
* (coerce 234 'double-float)
234.0d0
* (coerce 234/5 'double-float)
46.8d0
* (coerce 2.234 'complex)
#C(2.234 0.0)
*