Skip to content
7 changes: 7 additions & 0 deletions base/rational.jl
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,13 @@ end

function show(io::IO, x::Rational)
show(io, numerator(x))

if isone(denominator(x)) && (
(get(io, :compact, false) || get(io, :typeinfo, Number) <: Rational
)
return
end

print(io, "//")
show(io, denominator(x))
end
Expand Down
2 changes: 2 additions & 0 deletions test/rational.jl
Original file line number Diff line number Diff line change
Expand Up @@ -253,6 +253,8 @@ end
rational2 = Rational(-4500, 9000)
@test sprint(show, rational1) == "1465//8593"
@test sprint(show, rational2) == "-1//2"
@test sprint(show, -2//2) == "-1//1"
@test sprint(show, [-2//2,]) == "Rational{Int64}[-1]"
let
io1 = IOBuffer()
write(io1, rational1)
Expand Down