我是朱莉娅的新手。得到了这个InexactError。提到我已经尝试过将其转换为float,但它没有用,也许我做错了。

column = df[:, i]
max = maximum(column)
min = minimum(column)
scaled_column = (column .- min)/max   # This is the error, I think
df[:, i] = scaled_column
julia> VERSION
v"1.4.2"

最佳答案

没有最小的工作示例,很难给出肯定的答案,但是通常,当您尝试将值转换为原始值不能正确转换的精确类型(如整数类型,但不同于浮点类型)时,会发生InexactError准确地表示出来。例如:

julia> convert(Int, 1.0)
1

julia> convert(Int, 1.5)
ERROR: InexactError: Int64(1.5)

其他编程语言随意选择某种四舍五入方法(通常是截断但有时四舍五入到最接近)。 Julia (Julia)不会猜测,要求您露骨。如果要舍入,截断,设置天花板等,可以:
julia> floor(Int, 1.5)
1

julia> round(Int, 1.5)
2

julia> ceil(Int, 1.5)
2

回到您的问题:您没有在任何地方调用convert,那么为什么会出现转换错误?在多种情况下,Julia会为您自动调用convert,通常是在您尝试将值分配给键入位置时。例如,如果您有一个Int数组,并为其分配浮点值,它将自动转换:
julia> v = [1, 2, 3]
3-element Array{Int64,1}:
 1
 2
 3

julia> v[2] = 4.0
4.0

julia> v
3-element Array{Int64,1}:
 1
 4
 3

julia> v[2] = 4.5
ERROR: InexactError: Int64(4.5)

所以这很可能发生在您身上:您通过执行(column .- min)/max获得非整数值,然后尝试将其分配到整数位置,并得到错误。

08-26 19:05