I think the problem is that the @big_str macro is evaluated and parses the value at compile time in the global scope before the setprecision call happens. As a workaround:
julia> setprecision(512) do
b=parse(BigFloat, "1.0")
@show precision(b)
end
precision(b) = 512
512