Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Перевод кода с Си в Паскаль


Автор: Vit2 3.6.2022, 17:52
Всем Привет!
Это альтернатива встроенной функции, используется в  mikroC PRO for AVR а мне надо использовать в mikroPascal PRO for AVR.
AVR это микроконтроллеры, например ATMaga8. Встроенная функция занимает больше места в памяти, что важно в микроконтроллерах с маленькой памятью.
Inc(); и Dec(); в mikroPascal PRO for AVR присутствует.

Например: float f = 3.141592654;
FloatToStrSimple(f, txt, 3);   // txt = "3.141"
 "d количество чисел после запятой "
 Я уже совсем запутался.

Код


void FloatToStrSimple(float f, char * txt, char d) {
   unsigned long n;
   short i = 0, j, tmp = 0, len = d;
   unsigned long p[10] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000};

   n = f * p[d];
   if (n < p[d])
      tmp = 1;
   do {
      if (i == d) 
      {
         txt[i++] = '.';
         continue;
      }
      txt[i++] = n % 10 + '0';
      n /= 10;

   }  while((len-- > 0) || n);

   if (tmp)
      txt[i++] = '0';

   txt[i] = '\0';
    
   for (j = i - 1, i = 0; i < j; i++, j--)
       tmp = txt[i], txt[i] = txt[j], txt[j] = tmp;
}


Автор: Vit2 6.6.2022, 16:06
Решено!
Тема закрыта.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)