首页 > 解决方案 > R取幂之谜

问题描述

有谁知道为什么下面会产生一个 NaN?我在 OSX 上的 R 4.0.2 上运行它。

> (1.55e-04/-7.35e-05)^(10/(22.77-12.66))
[1] NaN

如果我把它分解,我也会得到一个 NaN

> a <- (1.55e-04/-7.35e-05)
> b <- (10/(22.77-12.66))
> a^b
[1] NaN

但是,如果我只是输入数字,我会得到正确的答案......

> a
[1] -2.108844
> b
[1] 0.9891197
> -2.108844 ^ 0.9891197
[1] -2.091793

标签: r

解决方案


得到正确答案了吗?以下作品:

-2.108844 ^ 0.9891197
#> [1] -2.091793

并给出与以下相同的结果:

-(2.108844 ^ 0.9891197)
#> [1] -2.091793

但是看看如果我将负号移到括号内会发生什么:

(-2.108844) ^ 0.9891197
#> [1] NaN

请注意,R 非常恰当地给出,NaN因为我将负数提高到分数幂。

所以你的问题的答案是,由于运算符优先级,R解析器正在解释

-2.108844 ^ 0.9891197

作为

-(2.108844 ^ 0.9891197)

当您直接输入数字时,这会给您错误的答案。


推荐阅读