在Julia Lang中将float转换为int

时间:2016-11-10 04:47:19

标签: floating-point int julia

有没有办法在Julia中将浮点数转换为int?我试图将浮点数转换为固定的精度数,小数部分表示为8位整数。为了做到这一点,我需要截断数字的小数部分,我认为最好的方法是从浮点x中减去x的转换整数:

  x = 1.23455
y = x - Int(x)
println(y)

y = 0.23455

5 个答案:

答案 0 :(得分:13)

您可能正在寻找trunc。这取决于小数部分的含义。这是truncfloor

之间的差异
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