2016-11-10 3 views
3

Есть ли способ конвертировать плавающее число в int в Julia? Я пытаюсь преобразовать число с плавающей запятой в число фиксированной точности с десятичной частью, представленной как 8-битное целое число. Для того, чтобы сделать это, мне нужно укоротить только дробную часть числа, и я понял, что лучший способ сделать это было бы вычесть преобразованное число х с плавающей точкой х:Преобразование float в int в Julia Lang

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

у = 0.23455

+2

код вы предоставили не будет работать, так как 'Int (х)' возвращает 'неточных error' если' x' не является целым числом выражается как 'Float64', например '1.0' или' -44.0'. Кроме того, я не могу сказать, что вы на самом деле после этого основали на вопросе. Ваша формулировка звучит так, как будто вы хотите десятичную часть «Float64», выраженную как «Int8». Это правильно? Это нечетный запрос, особенно учитывая, что для вашего примера номер '1.23455' десятичная часть как' Int64' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' ' –

+0

Кроме того, кажется, что вы можете использовать функции округления. Все эти функции принимают целевые типы для преобразования: http://docs.julialang.org/en/release-0.5/manual/mathematics-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. Это зависит от того, что вы подразумеваете под десятичной частью. Это разница между 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