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);
}