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
Utilice parse(Float64,"1")
.
Ver más en: especificación parse