casting without rounding using coder
11 views (last 30 days)
How can I manually trigger casting from a float/double to integer without involving any rounding while using coder?
LUT = single(rand(1,2000)*200);
ind = int32(LUT(i));
When the C++ code is generated it will be similar to:
int ind = static_cast<int>(rt_roundf_snf(LUT[i]));
I am aware that under certain circumstances coder is able to automatically figure out the optimal datatypes for indexing inside for loops resulting then in the desired result:
int ind = static_cast<int>(LUT[i]);
Bjorn Gustavsson on 12 Jul 2022
Well, the only interpretation I can thing of that matches the "casting without rounding" in a sensible way is:
ind = int32(floor(LUT2(i));
That way ind will be the integer part of whatever LUT2 is. But this is still "rounding-off the fractional part".