怎么将Float64转换成Int, 或者说将Array{Float64, 1}转换成Array{Int, 1}?
记 A
为待转换的数组,则 convert(Array{Int, 1}, A)
或 Array{Int, 1}(A)
可将其转换为 Array{Int, 1}
类型的数组。如果 A
的元素不能转换为 Int
类型的数(例如 0.5
),则转换会失败。
比如说
A=[1.1, 2.2, 3.3] convert(Array{Int, 1}, A)
是不能转化的吧,A=[1.0, 2.0, 3.0]
就可以被转换, 同样单个元素也是这样。
不知道有什么好的办法强转呢。
convert.(Int,A)
文档搜索 Boardcast
当然了,1.2这种转Int会抛出InexactError,这个convert文档有写,所以你可能需要先取整一下才能转。
比如:convert.(Int,A .|> round)
好的,非常感谢!
用round
应该不太合适,convert.(Int,A .|> floor)
才对吧,浮点型强转到整形直接取的是小数点之前的值。还有有意思的是floor(1.999999999999999)=1.0
,而floor(1.9999999999999999)=2.0
直接 A .|> floor
就行了,不用再转类型了。
额,莫非我版本原因?
`` _
_ _ ()_ | Documentation: https://docs.julialang.org
() | () () |
_ _ | | __ _ | Type “?” for help, “]?” for Pkg help.
| | | | | | |/ ` | |
| | || | | | (| | | Version 1.1.1 (2019-05-16)
/ |_‘|||_’_| | Official https://julialang.org/ release
|__/ |
julia> A=[1.1, 2.2, 3.3]
3-element Array{Float64,1}:
1.1
2.2
3.3
julia> A .|> floor
3-element Array{Float64,1}:
1.0
2.0
3.0
julia> A .|> floor .|> Int
3-element Array{Int64,1}:
1
2
3
``
对不起啊,我记错了,确实不会直接转成整数。
哈哈,没关系,同样非常感谢,一起学习!
A .|> x->floor(Int, x)