给定两个整数:为什么`a^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"
我想我可以理解为什么:因为其他整数组合(例如a <- 2L
和b <- 3L
)会返回数字,它总是需要做的事情总是返回一个数字。
现在到幂:
class(a^b)
# [1] "numeric"
这个人是有点让我吃惊的。任何人都可以解释为什么它是这样设计的?
我想这是因为结果会导致'Inf'? 'as.integer(Inf)'会导致'NA'。例如:2L^10000L – Arun
尽管我喜欢所选的答案,但也许有人会问,让实幂的代码创建另一个“角落案例”是否有任何优势。特别是如果可以调用的'R'代码或'unix'' pow函数首先使用日志来计算指数。 –