From 4fd69c4253001df797725204c8832e64cac68193 Mon Sep 17 00:00:00 2001 From: Sarvjeet Singh Date: Sat, 12 Dec 2015 14:03:28 +0530 Subject: [PATCH] writedlm() modified to print leading zeros when writing floats. For example, 0.5 was written as .5 now after modification writedl() writes as 0.5. --- base/grisu.jl | 6 +++--- test/datafmt.jl | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/base/grisu.jl b/base/grisu.jl index 5b9837b0e9dd8..9215eea567d6d 100644 --- a/base/grisu.jl +++ b/base/grisu.jl @@ -127,7 +127,7 @@ Base.showcompact(io::IO, x::Float16) = _show(io, x, PRECISION, 5, false) # normal: # 0 < pt < len ####.#### len+1 -# pt <= 0 .000######## len-pt+1 +# pt <= 0 0.000######## len-pt+1 # len <= pt (dot) ########000. pt+1 # len <= pt (no dot) ########000 pt # exponential: @@ -149,8 +149,8 @@ function _print_shortest(io::IO, x::AbstractFloat, dot::Bool, mode, n::Int) write(io, dec(e)) return elseif pt <= 0 - # => .000######## - write(io, '.') + # => 0.000######## + write(io, "0.") while pt < 0 write(io, '0') pt += 1 diff --git a/test/datafmt.jl b/test/datafmt.jl index f9a453a731e22..126a439f5abef 100644 --- a/test/datafmt.jl +++ b/test/datafmt.jl @@ -93,6 +93,18 @@ let x = [1,2,3], y = [4,5,6], io = IOBuffer() @test readcsv(io) == [x y] end +let x = [0.1 0.3 0.5], io = IOBuffer() + writedlm(io, x, ", ") + seek(io, 0) + @test readall(io) == "0.1, 0.3, 0.5\n" +end + +let x = [0.1 0.3 0.5], io = IOBuffer() + writedlm(io, x, ", ") + seek(io, 0) + @test readcsv(io) == [0.1 0.3 0.5] +end + let x = ["abc", "def\"ghi", "jk\nl"], y = [1, ",", "\"quoted\""], io = IOBuffer() writedlm(io, zip(x,y), ',') seek(io, 0)