почему typeof(Inf) является двойным?

#r #double

#r #двойной

Вопрос:

Почему в R typeof(Inf) возвращается double ? R считает бесконечность действительным числом или просто числом?

 x=1
xx=0
y=x/xx
typeof(y)
  

ответ таков "double"

Спасибо

Комментарии:

1. Вы делите два удвоения. Вы ожидали, что арифметическая операция изменит тип?

2. @Roland Ошибка, да : typeof(1L / 2L) .

3. @KonradRudolph Я знаю. Я пытаюсь выяснить, что именно спрашивает нас OP и что их смущает. Я нахожу вопрос совершенно неясным.

4. Я не понимаю, почему R cnoseder a / 0 — это Inf, а не NaN

Ответ №1:

Ну, в общем, потому что любой числовой литерал в R имеет тип double , если он не заканчивается на L :

 > typeof(1)
double
> typeof(NA_real_)
double
> typeof(1L)
integer
  

И, более конкретно, because Inf — это специальное значение, которое может храниться только в виде числа с плавающей запятой, а не в виде целого числа.

Комментарии:

1. не обязательно: 1:5 например, имеет тип integer .

2. @JDL Верно, но это не числовой литерал. 😉 И тип зависит от : , который может быть переопределен (например, в моих интерактивных сеансах R тип 1:5 — это xrange потому, что я переопределяю : ).

3. Хорошо, хорошо … NA_integer_ : P