当使用负数作为基数执行指数计算时,当使用原始值而不是包含该值的变量时,将返回不一致的结果。
内部评级:
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
这就是复杂的答案。