Это вопрос порядка операций. Вы можете видеть, как Юлия анализирует это выражение:
julia> parse("-2.3^-7.6")
:(-(2.3 ^ -7.6))
и поэтому причина, по которой у вас нет проблем, заключается в том, что вы на самом деле берете 2,3 ^ (-7,6), то есть 0,0017818389423254909, а затем переворачиваете знак.
Ваш второй подход эквивалентен проверке того, что «x» в «x ^ y» действительно отрицательный, или:
julia> parse("(-2.3)^-7.6")
:(-2.3 ^ -7.6)
julia> eval(parse("(-2.3)^-7.6"))
ERROR: DomainError:
Exponentiation yielding a complex result requires a complex argument.
Replace x^y with (x+0im)^y, Complex(x)^y, or similar.
Stacktrace:
[1] nan_dom_err at ./math.jl:300 [inlined]
[2] ^(::Float64, ::Float64) at ./math.jl:699
[3] eval(::Module, ::Any) at ./boot.jl:235
[4] eval(::Any) at ./boot.jl:234
И если мы последуем этой инструкции, мы получим то, что вы ожидаете:
julia> Complex(-2.3)^-7.6
0.0005506185144176565 + 0.0016946295370871215im