Conversion, troncature, arrondi

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)
*

Irene DURAND
2011-10-14