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!

Parents
  • "Technically, the wTemp should be 18"

    No; 17 is correct: "When a value of floating type is converted to integral type, the fractional part is discarded" [1] (my emphasis).

    That's precisely what "truncate" means!

    [1] Appendix A, K&R, "The C Programming Language, 2/ed"

Reply
  • "Technically, the wTemp should be 18"

    No; 17 is correct: "When a value of floating type is converted to integral type, the fractional part is discarded" [1] (my emphasis).

    That's precisely what "truncate" means!

    [1] Appendix A, K&R, "The C Programming Language, 2/ed"

Children
No data