Mikro İŞlemci Hesap Makİnesi C kodlarında anlamadığım yer?

Başlatan farcon, 30 Kasım 2012, 21:52:47

farcon

Merhaba arkadaşlar

bu verdiğim kodları biri bana açıklayabilirmi?
lcdde hesap makinesi sonuçlarını yazdırma kısmı.virgül olacakmı olmayacakmı kısmı.ama mantığını anlayamıyorum :(

void hesap_format (float f)
{
   char buf [maks_karakter+1];
   float bolen = 100000000;
   float l;
   signed char boy=0, p=0;
   
   // isaret arti mi? eksi mi?   
   if (f >= 0)
      buf[p++] = ' ';
   else
   {
      buf[p++] = '-';
      f = -f;
   }
   
   if (f >= bolen)
      buf[p++] = 'E';
   else
      while (p < maks_karakter && (bolen > 1 || f >= 0.0000001))
      {
         bolen /= 10;
         l = floor(f/bolen); //sonuc basamaklarina ayrilir.
         if (bolen < 1 && bolen > 0.01) //sayinin varsa noktali kismi belirlenir
            buf[p++] = '.';
         if (l != 0 || bolen < 10)//LCD ye gonderilecek karakterler sirasiyle diziye aktarilir. 
         {
            buf[p++] = l + '0';   //
            boy = 1;              //
         }
         else
         if (boy)
            buf[p++] = '0';
         f -= l*bolen;
      }
   buf[p] = 0;           
   hesap_yaz(buf);
}