Julia: Convertir une chaîne numérique en float ou int
Je suis en train d'écrire des données numériques extraites d'une base de données dans un Float64[]
. Les données d'origine dans ::ASCIIString
format, donc essayer de le pousser vers le tableau donne l'erreur suivante:
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
De tenter de les convertir directement les données sans surprise jette la même erreur:
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)
...
Étant donné que je sais que les données sont numériques, est-il une manière que je peux le convertir avant de pousser?
p.s. Je suis l'aide de la version 0.4.0
source d'informationauteur peter-b
Vous devez vous connecter pour publier un commentaire.
Vous pouvez
parse(Float64,"1")
à partir d'une chaîne. Ou, dans le cas d'un vecteurva analyser l'ensemble de vecteur.
BTW envisager d'utiliser
tryparse(Float64,x)
au lieu de l'analyser. Elle renvoie une Nullable{Float64} qui est nulle dans le cas de la chaîne de ne pas analyser. Par exemple:Et généralement, on voudrait une valeur par défaut dans le cas d'une erreur d'analyse:
Utilisation
parse(Float64,"1")
.En savoir plus: analyser les spécifications