有没有办法在Julia中将浮点数转换为int?我试图将浮点数转换为固定的精度数,小数部分表示为8位整数。为了做到这一点,我需要截断数字的小数部分,我认为最好的方法是从浮点x中减去x的转换整数:
x = 1.23455
y = x - Int(x)
println(y)
y = 0.23455
答案 0 :(得分:13)
您可能正在寻找trunc
。这取决于小数部分的含义。这是trunc
和floor
:
julia> trunc(Int, 1.2)
1
julia> trunc(Int, -1.2)
-1
julia> floor(Int, 1.2)
1
julia> floor(Int, -1.2)
-2
答案 1 :(得分:3)
我认为您正在寻找floor
:
julia> x = 1.23455
1.23455
julia> floor(x)
1.0
julia> y = x - floor(x)
0.23455000000000004
答案 2 :(得分:2)
要回答标题中的一般问题(将Float转换为Int),我更喜欢四舍五入,然后转换为Int:
convert(Int64, round(1.3, digits=0))
# 1
convert(Int64, round(1.7, digits=0))
# 2
答案 3 :(得分:2)
根据floor
docs
您可以这样做
julia> x = 45.5
45.5
julia> typeof(x)
Float64
julia> x = floor(Int8,x)
45
julia> typeof(x)
Int8
答案 4 :(得分:0)
似乎您真正需要的是数字的小数部分。在这种情况下,您可以像这样直接使用模1:
x = 1.23455
y = x % 1
println(y)
# 0.2345