The following code throws the error InexactError: Int64(0.003781915448214505) and I am unsure why:
cost = fill(0,8,8)
for i = 2:100
row = Int64(category[i]) # category is an Array containing Float64 from 1.0 to 8.0
col = Int64(category[i+1])
cost[row,col] = cost[row,col] + costChange[i+1] # costChange is an Array containing Float64
end
For some context, “casting” (after @pdeffebach) means making something a different type. Julia Int64(x) converts/casts into 64-bit integer and doesn’t specify what to do if x doesn’t exactly “fit” an integer. This contrasts with Python Int which (I think) first truncates if necessary.
I believe the documentation could be improved in this regard, because this is a common thing to do. I had a hard time finding docs for Int and Int64. There is this stackoverflow on similar topic. I guess it’s debatable whether Julia should rather accept Int64(3.5), which might be more similar to Python or Fortran. A downside is that some prefer an explicit error, and consider it better to explicitly specify rounding/truncating.