使用负数作为基数执行指数计算时,如果使用原始值而不是包含该值的变量,则会返回不一致的结果。
在 IRB 中:
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)
,但是为什么使用变量时会有不同的行为呢?