Compiler isn't converting float to INT8 properly

I'm using Microvision 4
C compiler Armcc.Exe v4.0.0.524
When this compiler converts a floating point number (single precision) to INT8 it doesn't handle negative values properly.
For example
INT8 Function::Convertnumber(F32 number)
{ INT8 return; return = number;
}

this only works for positive numbers. If a negative value is passed into the function 0 is returned only. Seems like a bug in the compiler. I can't find any errata concerning this but i'm wondering if anyone else has noticed this problem and how it was solved?

Parents
  • For example

    INT8 Function::Convertnumber(F32 number)
    { INT8 return; return = number;
    }
    

    How about you provide an example that actually compiles, to begin with? Or better yet, one that actually demonstrates the full problem, i.e. one which people could actually run and see the problem for themselves?

    Oh, and showing the definitions of INT8 and F32 might have been nice, too.

Reply
  • For example

    INT8 Function::Convertnumber(F32 number)
    { INT8 return; return = number;
    }
    

    How about you provide an example that actually compiles, to begin with? Or better yet, one that actually demonstrates the full problem, i.e. one which people could actually run and see the problem for themselves?

    Oh, and showing the definitions of INT8 and F32 might have been nice, too.

Children
More questions in this forum