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
  • My understanding is:

    Rounding off should round to the nearest integer;
    Rounding down should round to the nearest integer below (ie, floor);
    Rounding up should round to the nearest integer above (ie, ceil)

    So:
    for positive values, truncation is equivalent to rounding down;
    for negative values, truncation is equivalent to rounding up;
    for negative values, you would round off by subtracting the 0.5.

Reply
  • My understanding is:

    Rounding off should round to the nearest integer;
    Rounding down should round to the nearest integer below (ie, floor);
    Rounding up should round to the nearest integer above (ie, ceil)

    So:
    for positive values, truncation is equivalent to rounding down;
    for negative values, truncation is equivalent to rounding up;
    for negative values, you would round off by subtracting the 0.5.

Children