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

时间:2013-06-02 22:04:56

标签: r integer exponent

给出两个整数:

a <- 1L
b <- 1L

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

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

但除以它们就会得到一个数字:

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

我想我可以理解为什么:因为其他整数组合(例如a <- 2Lb <- 3L)会返回一个数字,所以要做的事情就更多一般总是返回一个数字。

现在进入取幂:

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

这对我来说有点意外。任何人都可以解释为什么它是这样设计的吗?

4 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:6)

^视为一系列函数f(a)(b) = a^b。对于a=2,其返回整数的域限于值[0,62](假设为64位有符号整数)。这是有效输入的一小部分。只有当a增加时,域才会变小。

答案 2 :(得分:0)

简单地加,减,乘两个整数得到整数。分割或执行取幂导致带有/不带小数的数字,为什么显示数字而不是整数。

答案 3 :(得分:0)

是否有可能将a^b实施为exp(b * log(a))