2016-11-10 282 views
3

有没有办法在Julia中将浮点数转换为int?我试图将浮点数转换为一个固定的精度数,小数部分表示为8位整数。为了做到这一点,我需要截断只数的小数部分,我想这样做是从浮点X减去X的转化整数的最佳途径:在Julia Lang中将float转换为int

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

Y = 0.23455

+2

您提供行不通的代码,因为'INT(X),除非'x'是一个整数形式为'会返回一个'不精确error' 'Float64',例如'1.0'或'-44.0'。另外,根据这个问题,我不能说出你究竟是什么。你的措辞使得它听起来像你想要的'Float64'的小数部分,表示为'Int8'。这是正确的吗?这是一个奇怪的要求,特别是考虑到你的示例编号为1.23455,小数部分为Int64,它的值为23455,但这显然太大而不能表示为Int8。 –

+0

此外,似乎你可以使用舍入函数。所有这些函数接受用于转换的目标类型:http://docs.julialang.org/en/release-0.5/manual/mathematical-operations/#man-rounding-functions – amrods

回答

3

我认为你正在寻找floor

julia> x = 1.23455 
1.23455 

julia> floor(x) 
1.0 

julia> y = x - floor(x) 
0.23455000000000004 
+1

从v0.6开始,请注意' floor'不是'Int64'类型,而是按照例子'Float64':'test = ceil(0.2); typeof运算(测试)' – jjjjjj

6

这可能是你正在寻找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