Infinity и NaN в Oracle


Забавно, что оракл легко кастует 'inf','infinity','-inf','-infinity','nan' в соответствующие binary_float_infinity,binary_float_nan, но вот при to_char(binary_float_infinity,format) нельзя найти ни одного формата который бы приводил к нормальному виду такому же как to_char(binary_float_infinity) без формата...

Кроме того, еще забавно то, что предикат "is infinite", а to_char(binary_float_infinity) = infinity

Ну и уже давно не забавно то, что некоторые клиенты не могут получить NaN в результате select(PL/SQL в счет, естественно, не берем). Хотя, скорее всего, это сделано ради совместимости и предупреждения ошибок фетча, иначе куча девелоперов бы страшно ругалась о падениях их софтин при возврате "странных" чисел :)

select 
  1/0f                                    "inf 1"
 ,binary_float_infinity                   "inf 2"
 ,cast('inf' as binary_float)             "inf 3"
 ,dump(cast('infinity' as binary_float))  "inf dump"

 ,-1/0f                                    "inf 1"
 ,-binary_float_infinity                   "inf 2"
 ,cast('-infinity' as binary_float)        "inf 3"
 ,dump(cast('-infinity' as binary_float))  "inf dump"

 ,dump(0/0f)                               "NaN 1"
 ,dump(binary_float_nan)                   "NaN 2"
 ,dump(cast('nan' as binary_float))        "NaN 3"
from dual 

Comments

Отправить комментарий