This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Inacurate precision truncating.

Hi folk,
I have

u16 wTemp = 0;
fsingle fTemp = 17.5123;

wTemp = (u16)fTemp;

Somehow, the wTemp is 17. Technically, the wTemp should be 18, do anybody know what do I have to do for the compiler in order to generate more precise data conversion???

Thanks!

  • "the C compiler will be smart enought to optimize "all" redundency."

    You'd hope so, wouldn't you?

    I did once come across a compiler (not 8051; not Keil; someone beginning with 'I') which did produce different results if you used "unnecessary" parentheses!

    But then their assembler produced the same opcode for both the "Jump If Equal" and "Jump If Not Equal" mnemonics!!