gpt4 book ai didi

string - Julia:将数字字符串转换为 float 或 int

转载 作者:行者123 更新时间:2023-12-03 10:23:53 28 4
gpt4 key购买 nike

我正在尝试将从数据库中提取的数字数据写入 Float64[] .原始数据在::ASCIIString格式,因此尝试将其推送到数组会出现以下错误:

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

尝试直接转换数据不出所料会引发相同的错误:
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)
...

鉴于我知道数据是数字,有没有办法在推送之前转换它?

附言我正在使用版本 0.4.0

最佳答案

您可以 parse(Float64,"1")从一个字符串。或者在向量的情况下

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

将解析整个向量。

顺便说一句,考虑使用 tryparse(Float64,x)而不是解析。它返回一个 Nullable{Float64}如果字符串不能很好地解析,则为 null。例如:
isnull(tryparse(Float64,"33.2.1")) == true

通常人们会想要一个默认值以防解析错误:
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]

关于string - Julia:将数字字符串转换为 float 或 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33440857/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com