2016-11-10 278 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