Цитата(IgorKossak @ Mar 1 2006, 13:35)

Цитата(d71 @ Mar 1 2006, 08:44)

в этот раз обошелся делением

Хорошей альтернативой операциям / % есть стандартная функция div, получающая частное и остаток сразу.
Например так
Код
unsigned char FloatToLCD(unsigned char StrNum, unsigned char StrPos, VarPrm vVar,
unsigned char Digits, bool isLeft)
{
unsigned char i = LEN_SYM_PRM;
long l;
unsigned char cBuf[LEN_SYM_PRM];
ldiv_t DivRes;
// переводим в целое
for (unsigned char i = 0; i<Digits; i++) vVar *= 10.0;
l = labs((long)vVar) + 0.5; // 0.5 для округления
cBuf[i] = 0x00; // Добавляем конец строки
while (i > 0)
{
DivRes = ldiv(l, 10);
cBuf[--i] = 0x30 + DivRes.rem;
l = DivRes.quot;
if ((LEN_SYM_PRM - i) == Digits) cBuf[--i] = '.';
if (Digits == 0)
{
if (l == 0) break;
}
else
{
if ((l == 0) && ((LEN_SYM_PRM - i) > (Digits + 1))) break;
}
}
if (vVar < 0.0) cBuf[--i] = '-';
// ...и выводим строку на ЖКИ
if (isLeft == 0) LCDString(StrNum, (StrPos + 1 - LEN_SYM_PRM + i), LCDStr, (cBuf + i));
else LCDString(StrNum, StrPos, LCDStr, (cBuf + i));
return (LEN_SYM_PRM - i);
}