【发布时间】:2013-05-29 01:46:39
【问题描述】:
给定两个整数:
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 -
虽然我喜欢所选的答案,但也许有人会问,让实际的求幂代码创建另一个“极端情况”是否有任何优势。尤其是如果
R代码或unixpow可以调用的函数首先使用日志来计算指数。