在Julia Lang中将float转换为int

JJT*_*JTO 11 floating-point int julia

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

  x = 1.23455
y = x - Int(x)
println(y)
Run Code Online (Sandbox Code Playgroud)

y = 0.23455

Fen*_*ang 19

您可能正在寻找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
Run Code Online (Sandbox Code Playgroud)

  • @karatedog`tob(x :: Float64)`总是返回Float.但是如果你提供`Int`作为第一个参数,就像在`trunc(Int,1.2)`中那样,你将获得一个整数. (5认同)
  • `trunc`现在返回Float,而不是Integer. (3认同)

Dav*_*ers 14

我认为您正在寻找floor

julia> x = 1.23455
1.23455

julia> floor(x)
1.0

julia> y = x - floor(x)
0.23455000000000004
Run Code Online (Sandbox Code Playgroud)

  • 从 v0.6 开始,请注意 `floor` 的输出不是 `Int64` 类型,而是 `Float64`,如示例所示:`test = ceil(0.2); 类型(测试)` (9认同)
  • 根据[文档], `floor(Int,x)` 更准确(https://docs.julialang.org/en/v1/base/math/#Base.floor) (7认同)

tuc*_*son 6

要回答标题中的一般问题(将 Float 转换为 Int),我们可以这样做:

round(Int, 1.3)
# 1
round(Int, 1.7)
# 2
Run Code Online (Sandbox Code Playgroud)


Jab*_*bba 6

结合之前的答案:

julia> int(x) = floor(Int, x)
int (generic function with 1 method)

julia> int(3.14)
3

julia> int(3.94)
3
Run Code Online (Sandbox Code Playgroud)