2016-08-07 22 views
6

Tôi có một mảng hoặc ma trận mà tôi muốn in, nhưng chỉ với ba chữ số chính xác. Làm thế nào để làm điều đó. Tôi đã thử những điều sau đây.Làm thế nào để xác định định dạng để in một mảng Floats trong julia?

> @printf("%.3f", rand()) 
0.742 

> @printf("%.3f", rand(3)) 
LoadError: TypeError: non-boolean (Array{Bool,1}) used in boolean context 
while loading In[13], in expression starting on line 1 

Cập nhật: Lý tưởng nhất, tôi chỉ muốn gọi hàm như printx("{.3f}", rand(m, n)) mà không cần phải xử lý thêm mảng hoặc ma trận của mình.

Trả lời

2

Làm thế nào về điều này?

julia> print(round(rand(3),3)) 
[0.188,0.202,0.237] 
3

Tôi không nghĩ @printf chấp nhận danh sách đối số như bạn mong đợi.

Một giải pháp bạn có thể dùng thử để sử dụng @sprintf để tạo chuỗi được định dạng, nhưng thu thập chúng trong một danh sách hiểu. Sau đó bạn có thể sử dụng tham gia để ghép chúng lại với nhau như vậy:

join([@sprintf "%3.2f" x for x in rand(3)], ", ") 
4

tôi sẽ làm điều đó theo cách này:

julia> map(x -> @sprintf("%.3f",x), rand(3)) 
3-element Array{String,1}: 
"0.471" 
"0.252" 
"0.090" 
Các vấn đề liên quan