当使用负数作为基数执行指数计算时,当使用原始值而不是包含该值的变量时,将返回不一致的结果。
内部评级:

1.9.3p194 :001 > -4.5 ** 0.5
 => -2.1213203435596424
1.9.3p194 :002 > foo = -4.5
 => -4.5
1.9.3p194 :003 > foo ** 0.5
 => (1.2989340843532398e-16+2.1213203435596424i)
1.9.3p194 :004 > (-4.5) ** 0.5
 => (1.2989340843532398e-16+2.1213203435596424i)

给什么?显然编译器将-4.5 ** 0.5解释为-(4.5 ** 0.5),但是为什么在使用变量时会有不同的行为?

最佳答案

第一行是

-(4.5 ** 0.5)

它的负平方根是4.5。
第二个方程相当于
(-4.5) ** 0.5

这就是复杂的答案。

10-06 05:21