Próbuję zapisać dane numeryczne wyciągnięte z bazy danych do Float64[]
. Oryginalne dane w formacie ::ASCIIString
, więc starają się wcisnąć go do tablicy daje następujący błąd:Julia: Konwertuj łańcuch liczbowy na wartość float lub 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
Próba konwersji danych bezpośrednio zaskoczeniem rzuca ten sam błąd:
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)
...
Zważywszy, że I wiedzieć, że dane są numeryczne, czy istnieje sposób, w jaki mogę je przekonwertować przed wysłaniem?
p.s. Używam wersji 0.4.0
Można 'parse (Float64 "1")' z ciągiem. Lub w przypadku wektora 'map (x-> pars (Float64, x), stringvec)" przeanalizuje cały wektor. –
To działa, dziękuję! –
BTW rozważ użycie 'tryparse (Float64, x)' zamiast 'parsowania'. Zwraca wartość Nullable Float, która ma wartość NULL w przypadku, gdy łańcuch znaków nie parsuje się dobrze. –