给出两个整数:
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"
这对我来说有点意外。任何人都可以解释为什么它是这样设计的吗?
答案 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))
?