I want the compact (in the sense of IOContext(io, :compact => true)
) string representation of a floating point number or vector for inclusion in a Quarto document. Currently I define a function
function compact(x; buf::IOBuffer = IOBuffer())
print(IOContext(buf, :compact => true), x)
return String(take!(buf))
end
Am I missing a more obvious way of doing this?
1 Like
I finally remembered the name Ryu
and was able to check functions such as Base.Ryu.writeshortest
and could call that directly with true
as the value of the compat
argument, but that may be even more difficult to explain than my current version.
Why not @sprintf("%.6g", x)
(from the Printf stdlib)? This should be pretty similar to :compact=>true
(which also limits output to 6 significant digits), but is a lot more explicit, is precisely documented, and gives you a lot more control.
But if you really want to use :compact=>true
, you can use the context
argument of repr
to do it a bit more concisely than what you wrote above: repr(x, context=:compact=>true)
.
4 Likes