当'a`和`b`都是整数时,为什么`a ^ b`返回一个数字?

flo*_*del 14 integer r exponent

给出两个整数:

a <- 1L
b <- 1L
Run Code Online (Sandbox Code Playgroud)

正如我所料,添加,减去或乘以它们也会给出一个整数:

class(a + b)
# [1] "integer"
class(a - b)
# [1] "integer"
class(a * b)
# [1] "integer"
Run Code Online (Sandbox Code Playgroud)

但除以它们给出一个数字:

class(a / b)
# [1] "numeric"
Run Code Online (Sandbox Code Playgroud)

我想我可以理解为什么:因为整数的其他组合(例如a <- 2Lb <- 3L)会返回一个数字,所以总是返回一个数字更常见.

求取指数:

class(a ^ b)
# [1] "numeric"
Run Code Online (Sandbox Code Playgroud)

这个对我来说有点意外.谁能解释为什么它是这样设计的?

Rob*_*don 17

这涵盖了指数为负数的情况.


Mat*_*erg 6

考虑^作为一系列功能,f(a)(b) = a^b.因为a=2,返回整数的域限于值[0,62](假设为64位有符号整数).这是有效输入的一小部分.域只会随着a增加而变小.