Tôi đang cố gắng ghi dữ liệu số được lấy từ cơ sở dữ liệu vào một Float64[]
. Các dữ liệu ban đầu là ở định dạng ::ASCIIString
, vì vậy cố gắng để đẩy nó vào mảng cung cấp cho các lỗi sau:Julia: Chuyển đổi chuỗi số thành float hoặc int
julia> push!(a, "1")
ERROR: MethodError: `convert` has no method matching convert(::Type{Float64}, ::ASCIIString)
This may have arisen from a call to the constructor Float64(...),
since type constructors fall back to convert methods.
Closest candidates are:
call{T}(::Type{T}, ::Any)
convert(::Type{Float64}, ::Int8)
convert(::Type{Float64}, ::Int16)
...
in push! at array.jl:432
Cố gắng để chuyển đổi dữ liệu trực tiếp gì ngạc nhiên ném những lỗi tương tự:
julia> convert(Float64, "1")
ERROR: MethodError: `convert` has no method matching convert(::Type{Float64}, ::ASCIIString)
This may have arisen from a call to the constructor Float64(...),
since type constructors fall back to convert methods.
Closest candidates are:
call{T}(::Type{T}, ::Any)
convert(::Type{Float64}, ::Int8)
convert(::Type{Float64}, ::Int16)
...
Cho rằng tôi biết dữ liệu là số, có cách nào tôi có thể chuyển đổi dữ liệu trước khi đẩy không?
p.s. Tôi đang sử dụng phiên bản 0.4.0
Bạn có thể 'phân tích cú pháp (Float64, "1") 'từ một chuỗi. Hoặc trong trường hợp của một vector 'map (x-> parse (Float64, x), stringvec)' sẽ phân tích cú pháp toàn bộ vectơ. –
Công trình này, cảm ơn! –
BTW xem xét sử dụng 'tryparse (Float64, x)' thay vì 'phân tích cú pháp '. Nó trả về một Nullable Float là null trong chuỗi trường hợp không phân tích tốt. –