Чаму `а ^ b` вяртае лікавы, как` a` і` b` цэлыя лікі?

Дадзены два цэлых колькасці:

a <- 1L
b <- 1L

Як я хацеў бы чакаць, складанне, адніманне, множанне або іх таксама дае цэлы лік:

class(a + b)
# [1] "integer"
class(a - b)
# [1] "integer"
class(a * b)
# [1] "integer"

Але падзяліўшы іх дае лікавы:

class(a/b)
# [1] "numeric"

I think I can understand why: because other combinations of integers (e.g. a <- 2L and b <- 3L) would return a numeric, it is the more general thing to do to always return a numeric.

Цяпер на экспоненциации:

class(a ^ b)
# [1] "numeric"

Гэта адзін біт для мяне нечаканасцю. Можа хто-небудзь растлумачыць, чаму ён быў распрацаваны такім чынам?

14
Хоць мне падабаецца абраны адказ, магчыма, можна было б спытаць, ці ёсць якія-небудзь перавагі, якія маюць фактычны код для патэнцаванне стварыць яшчэ адзін «кут справы.» Асабліва, калі альбо R Код або Unix Паў функцыя, якая можа быць выклікана выкарыстоўвае часопісы для вылічэнні экспаненты ў першую чаргу.
дададзена аўтар Carl Witthoft, крыніца
Хоць мне падабаецца абраны адказ, магчыма, можна было б спытаць, ці ёсць якія-небудзь перавагі, якія маюць фактычны код для патэнцаванне стварыць яшчэ адзін «кут справы.» Асабліва, калі альбо R Код або Unix Паў функцыя, якая можа быць выклікана выкарыстоўвае часопісы для вылічэнні экспаненты ў першую чаргу.
дададзена аўтар Carl Witthoft, крыніца
Хоць мне падабаецца абраны адказ, магчыма, можна было б спытаць, ці ёсць якія-небудзь перавагі, якія маюць фактычны код для патэнцаванне стварыць яшчэ адзін «кут справы.» Асабліва, калі альбо R Код або Unix Паў функцыя, якая можа быць выклікана выкарыстоўвае часопісы для вылічэнні экспаненты ў першую чаргу.
дададзена аўтар Carl Witthoft, крыніца
Я думаю, гэта таму, што вынік можа прывесці да Inf ?? <�Код> as.integer (Inf) прывядзе NA . Прыклад: 2L ^ 10000L
дададзена аўтар Arun, крыніца
Я думаю, гэта таму, што вынік можа прывесці да Inf ?? <�Код> as.integer (Inf) прывядзе NA . Прыклад: 2L ^ 10000L
дададзена аўтар Arun, крыніца

11 адказы

Гэта ахоплівае выпадак, калі паказчык адмоўны.

17
дададзена

Гэта ахоплівае выпадак, калі паказчык адмоўны.

17
дададзена

Гэта ахоплівае выпадак, калі паказчык адмоўны.

17
дададзена

Разгледзім ^ як сямейства функцый, F (а) (б) = а ^ б . Для а = 2 , дамен, для якога гэта вяртае цэлы лік абмежавана значэннямі [0,62] (мяркуючы, што 64-разрадныя цэлыя лікі). Гэта вельмі невялікае падмноства дапушчальных уваходаў. Дамен толькі становіцца ўсё менш, як а павялічваецца.

6
дададзена
цікава. Я думаю, што мне падабаецца адказ Роб Ліндана лепш ( «цэлыя лікі не замкнёныя [матэматычна] пры ^ аперацыі»), але ў вас ёсць разумнае ( "цэлыя лікі не замкнёныя [вылічальная] пад <�код > ^ аперацыя ") - але гэта становіцца складаней, таму што адзін павінен пачаць рашэнне аб кашицеобразного/прагматычных падставах ...
дададзена аўтар Ben Bolker, крыніца

Разгледзім ^ як сямейства функцый, F (а) (б) = а ^ б . Для а = 2 , дамен, для якога гэта вяртае цэлы лік абмежавана значэннямі [0,62] (мяркуючы, што 64-разрадныя цэлыя лікі). Гэта вельмі невялікае падмноства дапушчальных уваходаў. Дамен толькі становіцца ўсё менш, як а павялічваецца.

6
дададзена
цікава. Я думаю, што мне падабаецца адказ Роб Ліндана лепш ( «цэлыя лікі не замкнёныя [матэматычна] пры ^ аперацыі»), але ў вас ёсць разумнае ( "цэлыя лікі не замкнёныя [вылічальная] пад <�код > ^ аперацыя ") - але гэта становіцца складаней, таму што адзін павінен пачаць рашэнне аб кашицеобразного/прагматычных падставах ...
дададзена аўтар Ben Bolker, крыніца

Разгледзім ^ як сямейства функцый, F (а) (б) = а ^ б . Для а = 2 , дамен, для якога гэта вяртае цэлы лік абмежавана значэннямі [0,62] (мяркуючы, што 64-разрадныя цэлыя лікі). Гэта вельмі невялікае падмноства дапушчальных уваходаў. Дамен толькі становіцца ўсё менш, як а павялічваецца.

6
дададзена
цікава. Я думаю, што мне падабаецца адказ Роб Ліндана лепш ( «цэлыя лікі не замкнёныя [матэматычна] пры ^ аперацыі»), але ў вас ёсць разумнае ( "цэлыя лікі не замкнёныя [вылічальная] пад <�код > ^ аперацыя ") - але гэта становіцца складаней, таму што адзін павінен пачаць рашэнне аб кашицеобразного/прагматычных падставах ...
дададзена аўтар Ben Bolker, крыніца

Яго простае складанне, адніманне і множанне двух цэлых лікаў прыводзіць да цэлага ліку. Падчас падзелу або выканання вынікаў экспоненциации колькасці з/без дзесятковага, што, чаму паказана лікавымі замест цэлага ліку.

0
дададзена
і гэта тое, што прыняты адказ ужо сказаў ...
дададзена аўтар flodel, крыніца

Яго простае складанне, адніманне і множанне двух цэлых лікаў прыводзіць да цэлага ліку. Падчас падзелу або выканання вынікаў экспоненциации колькасці з/без дзесятковага, што, чаму паказана лікавымі замест цэлага ліку.

0
дададзена
і гэта тое, што прыняты адказ ужо сказаў ...
дададзена аўтар flodel, крыніца

Яго простае складанне, адніманне і множанне двух цэлых лікаў прыводзіць да цэлага ліку. Падчас падзелу або выканання вынікаў экспоненциации колькасці з/без дзесятковага, што, чаму паказана лікавымі замест цэлага ліку.

0
дададзена
і гэта тое, што прыняты адказ ужо сказаў ...
дададзена аўтар flodel, крыніца

Ці можна а ^ Ь </​​код> быў рэалізаваны як нешта накшталт ехр (б * LOG (а)) ?

0
дададзена
Без доказы такога роду заўвагу лепш пакінуць у якасці каментара IMO.
дададзена аўтар Paul Hiemstra, крыніца
Як ні дзіўна :-), што быў мой каментар некаторы час таму. Я павінен быць больш актыўным і пайсці зірнуць на базавы зыходны код.
дададзена аўтар Carl Witthoft, крыніца

Ці можна а ^ Ь </​​код> быў рэалізаваны як нешта накшталт ехр (б * LOG (а)) ?

0
дададзена
Без доказы такога роду заўвагу лепш пакінуць у якасці каментара IMO.
дададзена аўтар Paul Hiemstra, крыніца
Як ні дзіўна :-), што быў мой каментар некаторы час таму. Я павінен быць больш актыўным і пайсці зірнуць на базавы зыходны код.
дададзена аўтар Carl Witthoft, крыніца