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 Reply Children
  • Indeed, I always tell people who say it obfuscates code that var++; is very odd at first glance as is var += value; ?: is very, very clear once the idiom is learned just as are var++ and var += value.

    Long live all parts of the the C language.

    Example use #234 of ?:...

    int cash = 1;
    printf("You have %d dollar%s\n", cash, 1 == cash ? "" : "s");
    - Mark

  • Of course this would have worked just as well I suppose:

    int cash = 1;
    char dollarStr[][sizeof "dollars"] = { "dollars", "dollar" };
    
    printf("You have %d %s\n", cash, dollarStr[cash == 1]);
    - Mark