void fix16ToStr(fix16 value, char *str, s16 numdec) { u32 len; fix16 v; u32 frac; u8 strFrac[8]; len = 0; if (value < 0) { v = -value; str[len++] = '-'; } else v = value; len += uintToStr_(fix16ToInt(v), &str[len], 1, 16); str[len++] = '.'; // get fractional part frac = fix16Frac(v) * 1000; frac /= 1 << FIX16_FRAC_BITS; // get fractional string uintToStr(frac, strFrac, 3); if (numdec >= 3) strcpy(&str[len], strFrac); else strncpy(&str[len], strFrac, numdec); }
void fix16ToStr(fix16 value, char *str, s16 numdec) { u32 len; fix16 v; len = 0; if (value < 0) { v = -value; str[len++] = '-'; } else v = value; len += uintToStr_(fix16ToInt(v), &str[len], 1, 16); str[len++] = '.'; uintToStr_((fix16Frac(v) * 1000) / (1 << FIX16_FRAC_BITS), &str[len], 1, numdec); }