为何R中用分数结果计算出NaN,硬编码数值却正常?
R中负数幂运算返回NaN的原因
这是运算符优先级导致的差异:
- R里幂运算
^的优先级比负号-高,所以你写的-0.048^1.5,实际执行逻辑是先算0.048^1.5,再给结果加负号,自然能得到合法的实数结果。 - 但
(x/5)^1.5或者y^1.5不同,这里是直接对负数-0.048做1.5次方运算。1.5等于3/2,运算时会先对负数开平方(本质是求0.5次方),而实数范围内负数没有平方根,所以返回NaN。
你可以自己验证这一点:
# 直接对负数做1.5次方,返回NaN (-0.048)^1.5 #> [1] NaN # 先算正数的幂再取负,和硬编码结果一致 -(0.048^1.5) #> [1] -0.01051627
内容的提问来源于stack exchange,提问作者Josep Pueyo
相关产品推荐
相关产品推荐

