SQL> alter session set nls_language = 'FRENCH'
2 /
Session modifiee.
SQL>
Voici un numéro en virgule flottante:
SQL> select -1d from dual
2 /
-1D
----------
-1.0E+000
SQL>
2 /
-1D
----------
-1.0E+000
SQL>
La racine carrée de -1 n’est pas un vrai numéro, c’est un numéro complexe. Qu’est-ce qui se passe si on essaie de la calculer en Oracle?
SQL> select sqrt(-1d) from dual
2 /
SQRT(-1D)
----------
Nan
SQL>
2 /
SQRT(-1D)
----------
Nan
SQL>
La réponse était Nan. C’est un acronyme pour Not a number. C’est à dire Pas un numéro. Si on veut, on peut remplacer un Nan par un autre numéro de la manière suivante:
SQL> select nanvl(sqrt(-1d),0) from dual
2 /
NANVL(SQRT(-1D),0)
------------------
0
SQL>
2 /
NANVL(SQRT(-1D),0)
------------------
0
SQL>
On peut aussi remplacer un Nan par un nul:
SQL> select nanvl(sqrt(-1d),null) from dual
2 /
NANVL(SQRT(-1D),NULL)
---------------------
SQL>
Finalement, on peut tester une valeur pour verifier si elle soit un Nan:
SQL> select 'sqrt(-1) est un numéro complexe' from dual
2 where sqrt(-1d) is nan
3 /
'SQRT(-1)ESTUNNOMBRECOMPLEXE'
-------------------------------
sqrt(-1) est un numéro complexe
SQL> select 'sqrt(1) est un vrai numéro' from dual
2 where sqrt(1d) is not nan
3 /
'SQRT(1)ESTUNVRAINOMBRE'
--------------------------
sqrt(1) est un vrai numéro
SQL>
Aucun commentaire:
Enregistrer un commentaire