update programacion pro lenguaje language julialang downloads docs books julia-lang

julia lang - programacion - Julia: Convierte una cadena numérica a flotar o int.



julia lenguaje de programacion (2)

Puedes parse(Float64,"1") desde una cadena. O en el caso de un vector.

map(x->parse(Float64,x),stringvec)

Parará todo el vector.

Por cierto, considere el uso de tryparse(Float64,x) lugar de analizar. Devuelve un Nullable {Float64} que es nulo en el caso de que la cadena no se analice bien. Por ejemplo:

isnull(tryparse(Float64,"33.2.1")) == true

Y generalmente uno querría un valor predeterminado en caso de un error de análisis:

strvec = ["1.2","NA","-1e3"] map(x->(v = tryparse(Float64,x); isnull(v) ? 0.0 : get(v)),strvec) # gives [1.2,0.0,-1000.0]

Estoy tratando de escribir datos numéricos extraídos de una base de datos en un Float64[] . Los datos originales están en formato ::ASCIIString , por lo que al intentar ::ASCIIString a la matriz se ::ASCIIString el siguiente error:

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

El intento de convertir los datos directamente de forma inesperada produce el mismo error:

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) ...

Dado que sé que los datos son numéricos, ¿hay alguna forma de convertirlos antes de enviarlos?

ps estoy usando la versión 0.4.0