关于数据文件的格式化输出?

最近想把一些数据格式化输出到txt文件:类似于fprintf,但都找不到,哪位大佬有些经验?

# code
julia> using DelimitedFiles

julia> filePath = "E:/Work/Julia/"
"E:/Work/Julia/"

julia> fileName = "wr2dlm.txt"
"wr2dlm.txt"

julia> f = filePath*fileName
"E:/Work/Julia/wr2dlm.txt"

julia> datas = rand(2,2)
2×2 Array{Float64,2}:
 0.249404  0.365997
 0.251868  0.886494

julia> writedlm(f,datas,",")

最后的结果文件:

0.24940432338317509,0.36599656186144025
0.25186768579032903,0.8864939723874281

可是我只想要保留前5位!
我自己能想到的是先用round()函数整理一上,不知道大佬们有其他想法没有?如果需它们占固定位数怎么做呢?

在转为字符串时限制输出位数。

julia> using Printf

julia> @printf stdout "%.5f" pi
3.14159

julia> s = @sprintf "%.5f" pi
"3.14159"

然后你可以把 stdout 改为文件的 io,手工构造 csv。
或者先把矩阵转为字符串的矩阵,然后 writedlm

1 个赞

你也可以先取近似值。可以考虑 floor 或者 round.

 datas=floor.(datas,digits=5)

谢谢,我试一下!