Logo de kxs.frCours d'informatique pour le lycée et la prépa

Réels

Définition

Un réel en OCaml est un nombre avec un point . :

# 5.4;;
- : float = 5.4

On peut également utiliser la notation scientifique avec e ou E :

# 5.4e-3;;
- : float = 0.0054
5.4E-3;;
- : float = 0.0054

Opérateurs pour les réels

Les opérateurs des réels sont les mêmes que ceux des entiers mais suivis d'un point (sauf ** qui n'existe pas pour les entiers):

Il n'est pas possible d'effectuer des opérations avec des entiers et des réels, c'est d'ailleurs pour cela que les opérateurs ne sont pas les mêmes. Par exemple il n'est pas correct d'écrire 1 + 1.0.

Fonctions mathématiques sur les réels

Il existe de nombreuses fonctions mathématique en OCaml, en voici quelques-unes :

Fonctions de troncature

Fonctions de conversion

Il est possible de passer d'un entier à un réel et d'un réel à un entier :

Exercices

1) Déterminer les résultats des expressions suivantes sans utiliser l'interpréteur OCaml (il peut y avoir des erreurs) :

  1. 1e-2 +. 2.5 *. 2.0 -. 1e+2;;
  2. -. 1.0 /. 2.0;;
  3. 4 +. 1.2;;
  4. 1.3 + 1.2;;
# 1e-2 +. 2.5 *. 2.0 -. 1e+2;;
- : float = -94.99

# -. 1.0 /. 2.0;;
- : float = -0.5

# 4 +. 1.2;;
Error: This expression has type int but an expression was expected of type
         float
  Hint: Did you mean `4.'?

# 1.3 + 1.2;;
Error: This expression has type float but an expression was expected of type
         int

2) Déterminer les résultats des expressions suivantes sans utiliser l'interpréteur OCaml (il peut y avoir des erreurs) :

  1. sqrt(4.0);;
  2. sqrt(4);;
  3. float_of_int(4) /. 2.0 ;;
  4. int_of_float(2.6) ;;
  5. int_of_float(-3.7) ;;
  6. floor(2.6) ;;
  7. floor(-3.7) ;;
  8. ceil(2.6) ;;
  9. ceil(-3.7) ;;
# sqrt(4.0);;
- : float = 2.

# sqrt(4);;
Error: This expression has type int but an expression was expected of type
         float
  Hint: Did you mean `4.'?

# float_of_int(4) /. 2.0 ;;
- : float = 2.

# int_of_float(2.6);;
- : int = 2

# int_of_float(-3.7) ;;
- : int = -3

# floor(2.6) ;;
- : float = 2.

# floor(-3.7) ;;
- : float = -4.

# ceil(2.6) ;;
- : float = 3.

# ceil(-3.7) ;;
- : float = -3.