lbenet
June 28, 2018, 1:53pm
1
This question was posed and answered for Julia 0.6 here .
In Julia 0.7, the same code does not solve the problem:
julia> VERSION
v"0.7.0-beta.65"
julia> v = rand(3)
3-element Array{Float64,1}:
0.06063439006332505
0.34977333069792294
0.9028104608355858
julia> show(IOContext(stdout, :compact=>false), v)
[0.0606344, 0.349773, 0.90281]
How can I get show
to display the non-compact output?
julia> show(IOContext(STDOUT, :compact => false, :limit => false), v)
[0.24458155261742687, 0.06301413396925781, 0.516253732800271]
2 Likes
lbenet
June 28, 2018, 3:27pm
4
And what about custom types?
julia> struct MyType{T}
v :: Vector{T}
end
julia> a = MyType{Float64}(randn(5))
MyType{Float64}([-0.761001, 0.979279, 1.58786, -0.574857, 0.309297])
julia> show(IOContext(stdout, :compact => false, :limit => false), a)
MyType{Float64}([-0.761001, 0.979279, 1.58786, -0.574857, 0.309297])
julia> show(IOContext(stdout, :compact => false, :limit => false), a.v)
[-0.761001, 0.979279, 1.58786, -0.574857, 0.309297]
1 Like
The :limit
property shouldn’t influence the number of printed digits. It seems to me that the requested possibility has been disabled in #24651 . I will double-check and make a PR if needed.
lbenet
June 28, 2018, 6:03pm
6
Thanks @rfourquet for taking a look on this.
I am not sure, but as far as I can trace this down (for the example above), I think the problem is related to this method of show
. There, :compact => true
is set, perhaps overwriting what may be defined by the context of io
. Is this correct?
As a side remark, the hack proposed here actually works:
julia> Base.show(io::IO, x::Union{Float64,Float32}) = Base.Grisu._show(io, x, Base.Grisu.SHORTEST, 0, true, false)
julia> a = MyType{Float64}(randn(5))
MyType{Float64}([-1.449833577704765, -0.10839395960990496, 3.141203529351768, 0.7843448324558726, -1.3296269838447883])
2 Likes
Yes your analysis is correct, thanks for the report! PR at https://github.com/JuliaLang/julia/pull/27850
2 Likes